cbd*_*per 8 docker docker-compose docker-build
现在我有一个docker-compose.yml:
version: "3"
services:
hello-world:
image: hello-world
build: .
environment:
NODE_ENV: development
ports:
- 3000:3000
entrypoint: npm run dev
# entrypoint: npm start
working_dir: /
volumes:
- ./distService:/distService
Run Code Online (Sandbox Code Playgroud)
您会看到该entrypoint命令有 2 个选项。当我开发时,我需要它运行npm run dev。当我部署它时,我需要它运行npm start。
如何在保留单个docker-compose.yml文件的同时执行此操作?
有没有办法将某种构建参数/ENV变量传递给docker-compose?人们通常如何处理这个问题?
首先,您需要使用生产默认值(例如内置的 ENTRYPOINT)来构建 Dockerfile。
然后,很容易利用 docker-compose 默认情况下同时处理 adocker-compose.yml和 a 的事实docker-compose.override.yml。
因此,在 中构建基本的生产就绪定义compose.yml,并添加特定的开发覆盖,例如覆盖文件中的本地卷映射和入口点。
docker compose upetc 命令将自动与您的开发堆栈配合使用,可以通过显式指定来完成生产部署-f compose.yml。
下面是一个如何构建它的示例。
FROM node AS builder
# Your usual setup here
WORKDIR /src
FROM builder AS build
COPY /src .
RUN npm build
FROM node AS final
COPY --from=build /src/build /app
WORKDIR /app
ENTRYPOINT ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
FROM node AS builder
# Your usual setup here
WORKDIR /src
FROM builder AS build
COPY /src .
RUN npm build
FROM node AS final
COPY --from=build /src/build /app
WORKDIR /app
ENTRYPOINT ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
services:
hello-world:
image: hello-world:prod
build: .
ports:
- 3000:3000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6440 次 |
| 最近记录: |