Docker与多个Dockfiles和图像组成(Django + Angular)
我正在构建一个应用程序,它使用Django和Angular分成两个不同的存储库和泊坞窗图像。Docker与多个Dockfiles和图像组成(Django + Angular)
我的文件结构是:
.
docker-compose.yml
djangoapp/
Dockerfile
manage.py
...
angularapp/
Dockerfile
...
我一直无法得到正常的工作,所有的文件我对这个发现似乎期望您与DockerFile
有docker-compose.yml
文件一起。
我已经尝试了多种不同的变化,但我现在的(不工作)docker-compose.yml
文件看起来像这样:
version : '3'
services:
web:
build: ./djangoapp
command: python manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000"
这给了我错误can't open file 'manage.py': [Errno 2] No such file or directory
。
如果我进入djangoapp/
目录并根据官方的Docker文档创建一个docker-compose.yml
文件,它可以正常工作。因此,实际构建没有问题,问题是从外部访问它,就像我试图做的那样。
更新:我还决定添加我的Dockerfile位于./djangoapp/Dockerfile
。
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
此问题已通过使用docker-compose build web
命令重建我的Docker映像来解决。似乎在我遇到错误的阶段,构建不包括所需的文件。所以在上面的问题中显示的代码中,没有什么是错的,它只是需要重建。
从我可以看到它似乎只是一个简单的错字
version : '3'
services:
web:
build: ./djangoapp
command: python manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000"
这./都是你丢失,我认为。我很确定没有它,码头组成文件不会进入指定的目录。
更新 现在我看到了你的Dockerfile,我注意到你没有添加manage.py到你的容器。与添加您的requirements.txt相同,您需要使用manage.py。在构建Docker容器时,它只具有您给它的内容以及它从基础Image获得的任何其他文件结构。
您可以将其添加到Dockerfile中,也可以在本地目录和容器目录之间共享卷。我认为将它添加到Dockerfile中将是最简单的。
另外,docker文件的默认名称是“Dockerfile”,而不是“DockerFile”。我不确定大写字母是否重要。 –
我都试过了,'。/ djangoapp'和'djangoapp'没有区别。两者都提供相同的响应 - 找不到manage.py文件。请注意,如果我编写一些完全假的文件,比如'./../ asfaf /',它会抛出一个错误,所以我猜它可以通过键入路径的两种方式找到djangoapp。 此外,Dockerfile的大写字母在SO上是一个错字。我修好了它。 最后,我将Dockerfile添加到最初的帖子。 –
@MarcusLind你最终发现我的最新更新? –
你是怎么发布这个的?你确定组合文件是按照列出的构建Dockerfile,并且没有使用旧版本的可能缺少'WORKDIR'或没有'ADD'内容到'/ code /'的图像? – wmorrell
@wmorrell我只是在与'docker-compose.yml'文件相同的目录中执行'docker-compose up'。 –