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时的输出。这是在运行COPY和npm build命令时如何再次使用缓存的图像 如何更改DockerFile或docker compose文件,以便部署新的源代码
您可以通过在上添加来强制生成忽略缓存,但这会降低性能(运行所有命令并为每个命令创建后续映像),是否有其他方法?是的,生成会稍微慢一点。但它将拥有最新的代码。