Docker使用Cache撰写构建命令,并且在复制到Docker时不拾取更改的文件

时间:2019-03-19 20:02:14

标签: docker docker-compose dockerfile

我有一个docker-compose.yml文件,该文件包含两个服务(均基于DockerFile)。我已经构建了一次图像(使用命令:docker-compose build),并且一旦我运行了该命令(docker-compose up),它们便已启动并运行。
我不得不更改用于其中一项服务的源代码,但是,当我重建图像(docker-compose build)时,运行服务(docker-compose up)后代码更改不会反映出来。

docker-compose.yml

version: '2'

services:
  serviceOne:
    build:
      context: ./ServerOne
      args:
          PORT: 4000
    ports:
      - "4000:4000"
    env_file:
      - ./ServerOne/.env
    environment:
      - PORT=4000
  serviceTwo:
    build:
      context: ./serviceTwo
      args:
          PORT: 3000
    ports:
      - "3000:3000"
    env_file:
      - ./serviceTwo/.env
    environment:
      - PORT=3000
      - serviceOne_URL=http://serviceOne:4000/
    depends_on:
      - serviceOne  

serviceOne / DockerFile

FROM node:8.10.0

RUN mkdir -p /app
WORKDIR /app
ADD package.json package-lock.json /app/
RUN npm install
COPY . /app/
RUN npm build
EXPOSE ${ACC_PORT}
CMD [ "npm", "start" ]

serviceTwo / DockerFile

FROM node:8.10.0

RUN mkdir -p /app
WORKDIR /app
ADD package.json package-lock.json /app/
RUN npm install
COPY . /app/
RUN npm build
EXPOSE ${ACC_PORT}
CMD [ "npm", "start" ]

以下是docker-compose第二次运行时的输出。
运行 COPY npm build 命令后,如何再次使用缓存的图像。

如何更改 DockerFile docker-compose 文件,以便部署新的源代码?

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以通过添加--no-cache option to the docker-compose build

来强制构建忽略缓存。