gpt4 book ai didi

docker - 动态地将参数传入 `docker-compose.yml`

转载 作者:行者123 更新时间:2023-12-02 03:08:37 24 4
gpt4 key购买 nike

我可以在 docker-compose.yml 中指定一个参数,如下所示(例如 RAILS_ENV)

version: '3'
services:
web:
build:
context: .
args:
RAILS_ENV: production

Dockerfile 使用此 ARG 并设置ENV,以便使用该环境变量构建我的镜像:

FROM ruby:2.5.1

# ...

ARG RAILS_ENV
ENV RAILS_ENV=$RAILS_ENV

# ...
# Image contains environment variable `$RAILS_ENV` as `"production"`

但是,如果我想使用 "products" 的硬编码值以外的值怎么办?

  1. 有没有办法将变量动态传递到 docker-compose.yml 文件中?

  2. 此外,如果我不传递任何内容,我可以在 docker-compose.yml 中指定默认值(例如 development)吗?

谢谢!

最佳答案

是的,你可以做到这一点。

首先,您需要使用变量创建 .env(与您的 Dockerfile 位于同一位置):

RAILS_ENV=production

您没有将此文件提交到存储库(您应该将其添加到 .gitignore)。然后你就可以开始在Dockerfile中使用它们:

version: '3'
services:
web:
build:
context: .
args:
RAILS_ENV: ${RAILS_ENV}

有两种方法可以定义变量的默认值:

${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment. ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment.

例如:

version: '3'
services:
web:
build:
context: .
args:
RAILS_ENV: ${RAILS_ENV:-development}

在此处了解更多信息:https://docs.docker.com/compose/compose-file/#variable-substitution

关于docker - 动态地将参数传入 `docker-compose.yml`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com