为什么Docker不编译我的微服务源文件?

时间:2019-05-02 15:11:52

标签: docker

我刚刚开始使用Docker。

我正在研究另一个开发人员编码的项目。在项目Docker容器中,我有三个微服务(聚合器,分类器,testmicro)。

classificatore/中,我有:

classificatore / Dockerfile

FROM python:3
RUN mkdir /src
ADD requirements.txt /src/.
WORKDIR /src
RUN pip install -r requirements.txt
ADD . /src/.
RUN mkdir -p /tmp/reqdoc
CMD ["python", "main.py"]

我通过运行以下程序构建应用程序:

docker-compose up -d

我已经意识到Docker并没有编译项目文件夹中的源文件,而是使用了由classificatore / Dockerfile创建的dir /src中的源文件。我找不到此目录。

如何告诉docker在我的项目位置中使用文件?

我正在使用PyCharm,不知道它是否是有用的信息:-)

编辑1

docker-compose.yml

version: '2.1'
services:
  files:
    image: busybox
    volumes:
     [..]

  grafana:
     [..]

  prometheus:
     [..]

  aggregatore:
   [..] 

  classificatore:
    build: classificatore/.
    volumes:    
      - [..]
    volumes_from: 
      - files
    ports: 
      - [..]
    command: ["python", "/src/main.py"]
    depends_on: 
      rabbit:
        condition: service_healthy

  testmicro:
    [..]    
  rabbit:
    [..]

1 个答案:

答案 0 :(得分:1)

docker-compose up -d将为声明构建的服务构建镜像,前提是且仅当本地Docker注册表中不存在镜像时。如果您docker-compose down并重新开始,则下一个调用将仅使用已存在的图像启动容器。

要更新现有映像并运行其中的新容器,必须专门要求构建。

docker-compose build
docker-compose up -d

另一种选择是使用--build选项。

docker-compose up -d --build

您可以通过查看帮助找到其他有用的方案:

docker-compose --help
docker-compose build --help
docker-compose up --help