gpt4 book ai didi

docker - 在环境变量中设置额外的主机

转载 作者:行者123 更新时间:2023-12-02 17:45:31 26 4
gpt4 key购买 nike

我正在使用 docker compose 来运行我的应用程序。为此,我需要在容器内设置主机(这取决于我正在运行的环境)。

我的方法是:

创建环境文件并设置变量:

#application.env
SERVER_IP=10.10.9.134

我的 docker compose 文件如下所示:
version: '2'
services:

api:
container_name: myApplication
env_file:
- application.env
build: ./myApplication/
entrypoint: ./docker/api-startup.sh
ports:
- "8080:8080"
depends_on:
- redis
extra_hosts: &extra_hosts
myip: $SERVER_IP

但我的问题是变量 SERVER_IP 永远不会被替换。

当我运行 docker-compose config 时,我看到:
services:
api:
build:
context: /...../myApplication
container_name: myApplication
depends_on:
- redis
entrypoint: ./docker/api-startup.sh
environment:
SERVER_IP: 10.10.9.134
extra_hosts:
myip: ''
ports:
- 8080:8080

我尝试使用 $SERVER_IP 或 ${SERVER_IP} 替换变量引用,但没有用。

最佳答案

我创建了一个文件 .env , 添加单行 HOST=test.example.com ,然后在 docker-compose 中执行此操作:

extra_hosts:
- myip:${HOST}
docker-compose config然后显示
  extra_hosts:
myip: test.example.com

为此,我遵循了 Docker-compose environment variables 中的文档。关于 .env的栏目文件

更新

根据 Docker 文档,

Note: If your service specifies a build option, variables defined in environment files will not be automatically visible during the build. Use the args sub-option of build to define build-time environment variables.



这基本上意味着如果您将变量放在 .env 中文件,您可以在 docker-compose.yml 中使用它们进行替换,但如果您使用 env_file对于特定容器的选项,您只能看到 Docker 容器内的变量,而不是在构建期间。也是合乎逻辑的, env_file替换 docker run --env-file=FILE ...没有别的。

因此,您只能将值放入 .env .或者,正如威廉所描述的,您可以使用主机的环境变量。

关于docker - 在环境变量中设置额外的主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39414373/

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