Dockerfile 中的条件复制?

dyl*_*zed 6 cloud environment-variables docker devops

我有一个带有生产 Dockerfile 的应用程序,它将我们的源代码复制到容器中,即:

COPY . /app

我想将此副本设置为有条件的,以便传入CONTEXT=环境变量来阻止/允许该行执行。那可能吗?

我在这里看到了相关帖子,但没有明确的答案。谢谢!

dyl*_*zed 5

这篇文章我发现 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
Run Code Online (Sandbox Code Playgroud)

然后我将我的开发配置docker-compose.yml为仅针对基础层,并为代码安装一个卷。

version: "3.7"

services:
  app.base.img:
    build:
      context: .
      target: base
    volumes:
      - ./:/app
    container_name: app.base
Run Code Online (Sandbox Code Playgroud)

我的生产管道正常构建图像(包含两层)。

请注意 3.7 版本声明,显然它是必需的。

这正是我想要的,感谢所有对此的评论和建议!如果您认为这是不明智的,请随时发表评论。


归档时间:

查看次数:

9329 次

最近记录:

5 年,5 月 前