我有一个带有生产 Dockerfile 的应用程序,它将我们的源代码复制到容器中,即:COPY . /app
我想让这个副本有条件,以便传入 CONTEXT=
环境变量阻止/允许执行此行。那可能吗?
我在这里看到了 related posts 但没有明确的答案。谢谢!
最佳答案
从 this post 我发现 Docker-Compose 3.7 支持针对单个构建阶段。
所以我创建了一个包含 2 个阶段的 Dockerfile,一个用于设置容器的 base
层,然后是一个在代码库中复制的 deploy
:
# BUILD STAGE 1 - BASE
FROM webdevops/php-apache:7.2-alpine as base
# Do stuff
# BUILD STAGE 2 - DEPLOY
FROM base as deploy
# Add project
COPY . /app
# Do other stuff
然后我将我的 dev docker-compose.yml
配置为仅针对基础层,并为代码安装一个卷。version: "3.7"
services:
app.base.img:
build:
context: .
target: base
volumes:
- ./:/app
container_name: app.base
我的生产管道正常构建图像(包括两个层)。请注意 3.7 版声明,显然这是必需的。
这就是我想要的,感谢您对此的所有评论和建议!如果您认为这是不明智的,请随时发表评论。
关于docker - Dockerfile 中的条件复制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63728819/