Docker与多个Dockfiles和图像组成(Django + Angular)

我正在构build一个使用Django和Angular的应用程序,它被分成两个不同的存储库和docker镜像。

我的文件结构是:

. docker-compose.yml djangoapp/ Dockerfile manage.py ... angularapp/ Dockerfile ... 

我一直无法让它正常工作,我发现在这个文件上的所有文件似乎希望你有docker-compose.yml文件一起DockerFile

我已经尝试了多个不同的变化,但我目前(不工作) 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文档创build一个docker-compose.yml文件,它可以正常工作。 所以实际构build没有问题,问题是从外面访问它,就像我正在尝试做的那样。

更新 :我也决定添加我的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/ 

从我可以看到它似乎只是一个简单的错字

 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执行的操作。 当构build一个Docker容器时,它只包含你给它的内容,以及它从基本Image获得的任何其他文件结构。

您可以将其添加到Dockerfile中,也可以在本地目录和容器目录之间共享卷。 我认为将其添加到Dockerfile中将是最简单的。

这个问题是通过用docker-compose build web命令重build我的Docker镜像来解决的。 似乎在我遇到错误的阶段,构build不包括所需的文件。 所以在上面显示的问题的代码中,没有什么是错的,只是需要重build。