我有一个带有生产 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/

10-16 18:47