首页 > 解决方案 > Docker Compose 使用缓存构建命令并且在复制到 docker 时不拾取更改的文件

问题描述

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

码头工人-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" ]

服务二/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第二次运行时的输出。这是在运行COPYnpm build命令
时再次使用缓存图像的一些方法。

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

在此处输入图像描述

标签: dockerdocker-composedockerfile

解决方案


您可以通过在 docker-compose 构建中添加 --no-cache 选项来强制构建忽略缓存


推荐阅读