Docker使用缓存编写生成命令,复制到Docker时不拾取更改的文件

Docker使用缓存编写生成命令,复制到Docker时不拾取更改的文件,docker,docker-compose,dockerfile,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'

我有一个由两个服务组成的
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  
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" ]
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" ]
serviceOne/DockerFile

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  
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" ]
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

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  
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" ]
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时的输出。
这是在运行COPYnpm build命令时如何再次使用缓存的图像

如何更改DockerFiledocker compose文件,以便部署新的源代码


您可以通过在

上添加来强制生成忽略缓存,但这会降低性能(运行所有命令并为每个命令创建后续映像),是否有其他方法?是的,生成会稍微慢一点。但它将拥有最新的代码。