gpt4 book ai didi

shell - Dockerfile : how to set env variable from file contents

转载 作者:行者123 更新时间:2023-12-03 04:45:06 25 4
gpt4 key购买 nike

我想在我的 Dockerfile 中设置一个环境变量。

我有一个.env文件看起来像这样: FOO=bar

在我的 Dockerfile 中,我有一个命令可以解析该文件的内容并将其分配给 FOO。

RUN 'export FOO=$(echo "$(cut -d'=' -f2 <<< $(grep FOO .env))")'

我遇到的问题是上面的脚本没有返回我需要的内容。事实上,它不会返回任何内容。

当我运行docker-compose up --build时,它因此错误而失败。

The command '/bin/sh -c 'export FOO=$(echo "$(cut -d'=' -f2 <<< $(grep FOO .env))")'' returned a non-zero code: 127

我知道命令/bin/sh -c 'echo "$(cut -d'=' -f2 <<< $(grep FOO .env))"'将生成正确的输出,但我不知道如何将该输出分配给环境变量。

对我做错了什么有什么建议吗?

最佳答案

环境变量

如果您想在 docker 镜像中设置多个环境变量(在容器内使用),您只需在 docker-compose.yml 文件中使用 env_file 配置选项即可。使用该选项,.env 文件中的所有条目将被设置为镜像中的环境变量,从而设置到容器中。

More Info about env_file

<小时/>

构建 ARGS

如果您的要求是仅在 Dockerfile 中使用某些变量,则按如下方式指定它们

ARG FOO
ARG FOO1
ARG FOO2

等等...

并且您必须在 docker-compose.yml 中的 build 键下指定这些参数

build:
context: .
args:
FOO: BAR
FOO1: BAR1
FOO2: BAR2

More info about args

<小时/>

访问 docker-compose.yml 文件中的 .env 值

如果您正在考虑将一些值从 .env 传递到 docker-compose 文件中,那么您可以简单地将 .env 文件放在与 docker-compose.yml 文件相同的位置,并且可以设置配置值,如下所示;

ports:
- "${HOST_PORT}:80"

因此,作为示例,您可以通过在 .env 文件中设置服务的主机端口

Please check this

关于shell - Dockerfile : how to set env variable from file contents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51642221/

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