python - 从父目录构建 Dockerfile

标签 python docker celery dockerfile

我有一个 python 应用程序,它使用我想要 dockerise 的 celery worker 。不幸的是,python 和 Celery 都使用相同的代码库。尽管它们必须是单独的容器以便于扩展。如果我单独构建它们并运行容器,它就可以正常工作。当我引入 docker-compose 时,问题就开始了,因此我无法在代码文件夹中交换 dockerfile,并且需要从文件夹外部构建容器。文件夹结构如下:

/application
    /application-build
       Dockerfile
    /celery-build
       Dockerfile
    /code
       application.py
       otherfiles.py

我现在一直在挖掘,不幸的是,据我所知,父目录中的文件无法复制到 dockerfile 中。虽然我想将相同的代码复制到两个容器中。
(请注意,以下 dockerfiles 不是我使用的确切文件。)

Dockerfile1:
FROM python:3.6
ADD /code .
COPY requirements.txt requirements.txt
RUN python3.6 -m pip install -r requirements.txt
CMD ["python3.6", "application.py"]

Dockerfile2:
FROM python:3.6
ADD /code .
COPY /code/requirements.txt .
RUN python3.6 -m pip install -r requirements.txt
CMD ["celery","-A application.celery", "worker","work1@host"]

我看到的一种解决方案是重新组织文件夹,以便代码目录始终是 dockerfile 目录的子目录,如下所示:
/application
   /application-build
      Dockerfile
      /celery-build
         Dockerfile
         /code
            application.py
            otherfiles.py

虽然看起来一点都不聪明。

最佳答案

没有问题。在 Dockerfile 中,您无法退出(访问父文件夹) 构建上下文 ,而不是 Dockerfile's 文件夹。

保持结构不变,并明确指定 Dockerfile 的路径:

docker build -t app -f application-build/Dockerfile . 
docker build -t celery -f celery-build/Dockerfile . 

在你的 Dockerfiles 中记住路径是 /application 。因此,您可以轻松复制:

Dockerfile
...
COPY code /code
...

关于python - 从父目录构建 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54110783/

相关文章:

python - 无法在 python 中使用 p4 模块

node.js - nodejs 应用程序在 docker-compose up 时以代码 0 退出

jenkins - 使用Jenkins运行Docker容器

python - 如何在 scrapy - python 中将多个 URL 保存为每个 StartURL 文件?

python - 我怎样才能让 pip 知道我对 python 3.4 的包感兴趣?

python - 使用 Tensorflow 2.0 进行逻辑回归?

php - 如何使用php 7.2在Lando中安装php-mcrypt?

python - celery :多次导入失败

python - celery worker : How to consume from all queues?

docker - docker 群或 Rancher 牛的 celery worker