如何设置多个指向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