我正在构建一个使用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文档创建docker-compose.yml
文件,它可以正常工作。所以实际构建没有问题,问题是从外部访问它,就像我想要的那样。
更新:我还决定添加位于./djangoapp/Dockerfile
的Dockerfile。
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
答案 0 :(得分:0)
从我看来,它似乎只是一个简单的错字
version : '3'
services:
web:
build: ./djangoapp
command: python manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000"
那个./是你想念的全部。我很确定没有它,docker compose文件就不会进入指定的目录。
<强>更新强> 现在我看到了你的Dockerfile,我注意到你没有将manage.py添加到你的容器中。与添加requirements.txt的方式相同,您需要使用manage.py。构建Docker容器时,它只包含您提供的内容以及它从基本Image中获得的任何其他文件结构。
您可以将其添加到Dockerfile中,也可以在本地目录和容器目录之间创建共享卷。我认为在Dockerfile中添加它会是最简单的。
答案 1 :(得分:0)
使用docker-compose build web
命令重建我的Docker镜像可以解决此问题。似乎在我遇到错误的阶段,该构建不包括所需的文件。所以在我在问题帖子中显示的代码中,没有任何错误,只需要重建。