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

问题描述:

我正在构建一个应用程序,它使用Django和Angular分成两个不同的存储库和泊坞窗图像。Docker与多个Dockfiles和图像组成(Django + Angular)

我的文件结构是:

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

我一直无法得到正常的工作,所有的文件我对这个发现似乎期望您与DockerFiledocker-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/ 
+0

你是怎么发布这个的?你确定组合文件是按照列出的构建Dockerfile,并且没有使用旧版本的可能缺少'WORKDIR'或没有'ADD'内容到'/ code /'的图像? – wmorrell

+0

@wmorrell我只是在与'docker-compose.yml'文件相同的目录中执行'docker-compose up'。 –

此问题已通过使用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中将是最简单的。

+0

另外,docker文件的默认名称是“Dockerfile”,而不是“DockerFile”。我不确定大写字母是否重要。 –

+0

我都试过了,'。/ djangoapp'和'djangoapp'没有区别。两者都提供相同的响应 - 找不到manage.py文件。请注意,如果我编写一些完全假的文件,比如'./../ asfaf /',它会抛出一个错误,所以我猜它可以通过键入路径的两种方式找到djangoapp。 此外,Dockerfile的大写字母在SO上是一个错字。我修好了它。 最后,我将Dockerfile添加到最初的帖子。 –

+0

@MarcusLind你最终发现我的最新更新? –