如何设置多个指向docker上相同值的envvariables?

我有几个容器,我和docker-compose一起运行。 其中之一是mysql,它需要设置一些variables。 我有.env文件中的那些:

 MYSQL_USER='my_user' MYSQL_PASSWORD='my_password' MYSQL_ROOT_PASSWORD='supersecretpassword' MYSQL_DATABASE='my_database' 

我能够成功启动mysql容器。

问题出现在我想使用另一个数据库迁移服务时,需要在.env文件中设置以下variables:

 SERVICE_DBUSER='my_user' SERVICE_DBPASSWORD='my_password' SERVICE_DBNAME='my_database' 

而我想写的( 这不起作用 ),以避免重复,是这样的:

 SERVICE_DBUSER="$MYSQL_USER" SERVICE_DBPASSWORD="$MYSQL_PASSWORD" SERVICE_DBNAME="$MYSQL_DATABASE" 

但docker工人不承认这一点,并没有执行replace。 在docker docs中 ,它也表示expects each line in an env file to be in VAR=VAL format

我的问题是,是否有可能避免重复?

非常感谢。

当您使用$VARIABLE${VARIABLE}引用它们时,Compose会将环境variablesreplace为YAML撰写文件。

您仍然可以使用.env文件来设置默认环境。 但是当你想引用一个variables的时候,把它放在编写yaml的environment:部分:

 environment: SERVICE_DBUSER: "${MYSQL_USER}" SERVICE_DBPASSWORD: "${MYSQL_PASSWORD}" SERVICE_DBNAME: "${MYSQL_DATABASE}" 

然后,如果您设置或在运行docker-compose时创build备用环境,则会得到replace的新值。

 $ MYSQL_USER="other" MYSQL_PASSWORD="opass" docker-compose start