[英]Creating Docker containers from Airflow where Airflow itself is in a container (because of Windows 10). What am I missing?
我有一个简单的示例 python 脚本,我希望 Airflow 按计划运行。 我可以为 Airflow 创建容器并在此容器中成功安装 Docker 服务器。 我可以手动访问 CLI 和“docker run”示例的容器并且它可以工作。 当我从本地主机管理员尝试它时,它只是说永远“运行”。 在 CLI 中检查“docker ps”表明它尚未启动容器。 我确定我错过了一些简单的东西,因为这里没有太多东西可以使事情复杂化。 请帮忙!?
这是python脚本:
import time as ti
def main():
print('TEST')
ti.sleep(120)
print('COMPLETE')
if __name__ == "__main__":
main()
和 Dockerfile 来构建它:
FROM python:3.8
WORKDIR /code
ENV PATH "$PATH:/code"
COPY docker_test.py .
CMD ["python", "docker_test.py"]
要创建气流容器,我使用这个 Dockerfile:
# Adds Docker to puckel image
FROM puckel/docker-airflow
# Adds DAG folder to the PATH
ENV PYTHONPATH "${PYTHONPATH}:/home/python_modules:/usr/local/airflow/dags"
# Install the optional packages
COPY requirements.txt requirements.txt
USER root
RUN pip install -r requirements.txt
# Install docker inside the webserver container
RUN curl -ssl https://get.docker.com/ | sh
ENV SHARE_DIR /usr/local/share
requirements.txt 包含 docker 并且 docker run 命令是:
docker run --restart always --name airflow_container --privileged -d -p 8080:8080 -v C:/Users/myprojectfolders/shared_volumes/dags:/usr/local/airflow/dags -v //var/run/docker.sock:/var/run/docker.sock mydockerlogin/airflow:2 webserver
最后一块拼图是 DAG 文件:
from airflow import DAG
from airflow.operators.docker_operator import DockerOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'myname',
'depends_on_past': False,
'start_date': datetime(2020, 10, 10),
'retries': 1,
'retry_delay': timedelta(minutes=2)
}
dag = DAG(
dag_id='docker_test',
schedule_interval='*/5 * * * *',
default_args=default_args
)
task = DockerOperator(
dag=dag,
task_id='dockertask',
container_name = 'dockertest',
image='mydockerlogin/dockertest:2',
auto_remove=False,
docker_url='unix://var/run/docker.sock',
command = ["python", "docker_test.py"]
)
我在命令和入口点周围尝试了很多变化,但无济于事。 非常感谢。
好吧,这有点尴尬。 我没有在本地主机管理员中将开关切换到“开”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.