卷上的Docker Compose使用环境变量

mah454

有什么方法可以在卷部分使用Docker Compose环境变量吗?

我使用了此配置,但它不起作用:

SampleContainer:
        image: myImage:latest
        container_name: sample
        depends_on:
            - mysql-server
        restart: always
        environment:
            - 'SERVER_NAME=jingool'
        volumes:
            - /opt/docker/myapplication/bootstrap.properties:/opt/myserver/${SERVER_NAME}/bootstrap.properties

我的问题是jingool未在卷上定义目录

我该如何解决这个问题?

巴特

您应该.env在放置全局环境的位置使用文件,以便通过compose进行读取。

有关如何使用该文件的更多信息,请参见:https : //docs.docker.com/compose/environment-variables/#the-env-file

另一种可能的解决方案是使用template.yml调用文件docker-compose,例如:

  • 创建一个template.yml,这是您的docker-compose.ymlwith环境变量。
  • 假设您的环境变量在文件“ env.sh”中
  • 将以下代码放入sh文件中并运行它。
source env.sh; rm -rf docker-compose.yml; envsubst < "template.yml" > "docker-compose.yml";

docker-compose.yml将使用正确的环境变量值生成一个新文件

示例template.yml文件:

SampleContainer:
        image: myImage:latest
        container_name: sample
        depends_on:
            - mysql-server
        restart: always
        volumes:
            - /opt/docker/myapplication/bootstrap.properties:/opt/myserver/${SERVER_NAME}/bootstrap.properties

样本env.sh文件:

#!/bin/bash 
export SERVER_NAME=jingool

另一个选项包括:

docker-compose1.5+已启用变量替换:https//github.com/docker/compose/releases

最新的Docker Compose允许您从compose文件访问环境变量。因此,您可以获取环境变量,然后像下面那样运行Compose:

set -a
source .my-env
docker-compose up -d

然后,您可以在docker-compose.ymlusing中引用变量${VARIABLE},如下所示:

/opt/docker/myapplication/bootstrap.properties:/opt/myserver/${SERVER_NAME}/bootstrap.properties

这是来自文档的更多信息,在这里获取:https : //docs.docker.com/compose/compose-file/#variable-substitution

BASH方式:

这是使用bash脚本和.env文件的更灵活的方法

一个示例.env文件:

EXAMPLE_URL=http://example.com
# Note that the variable below is commented out and will not be used:
# EXAMPLE_URL=http://example2.com 
SECRET_KEY=ABDFWEDFSADFWWEFSFSDFM

# You can even define the compose file in an env variable like so:
COMPOSE_CONFIG=my-compose-file.yml
# You can define other compose files, and just comment them out
# when not needed:
# COMPOSE_CONFIG=another-compose-file.yml

然后在同一目录中运行此bash脚本,该脚本应正确部署所有内容:

#!/bin/bash
docker rm -f `docker ps -aq -f name=myproject_*`
set -a
source .env
cat ${COMPOSE_CONFIG} | envsubst | docker-compose -f - -p "myproject" up -d

这里也有有趣的读物:https : //modulitos.com/2016/03/lets-deploy-part-1/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在docker compose中使用环境变量作为卷名

Docker使用卷共享环境变量

Docker Compose-使用容器环境变量的命令

docker-compose使用.env文件中的环境变量

如何在Docker Compose中使用环境变量

使用docker-compose还原环境变量

使用Docker Compose将JSON文件读入环境变量

Docker Compose:更改环境变量

Docker-compose环境变量

docker-compose构建环境变量

Docker使用映像环境变量挂载卷

如何在 docker-compose 健康检查上使用环境变量?

使用docker compose将环境变量从外部环境文件传递到容器

在构建时使用docker-compose将环境变量传递给docker映像

使用 docker-compose 将环境变量注入 docker 容器

docker compose环境变量未在Dockerfile中设置变量

无法使用docker-compose run -e选项传递环境变量

使用Neo4j和docker-compose配置环境变量

如何在docker-compose.yml的.env文件中使用环境变量?

如何使用docker-compose环境变量填充配置文件

如何在Dockerfile中使用docker-compose.yml中的环境变量?

在docker compose yml中使用容器名称或ID作为环境变量

在docker-compose的命令键中使用容器的环境变量

如何使用create-react-app在docker-compose.yml中传递环境变量

使用环境变量在docker-compose.yaml中设置布尔值

如何从其他目录通过docker-compose使用环境变量

如何在生产中的 docker-compose 中使用环境变量?

docker-compose.yml环境变量到php环境变量

在docker-compose中,我可以使用环境变量来构造另一个环境变量吗?