在不使用bash -c的情况下,在Docker运行中使用容器环境变量

4
我有一个WP-CLI容器,需要运行以下命令: wp --allow-root core config --dbname=$MYSQL_DATABASE --dbuser=$MYSQL_USER --dbpass=$MYSQL_PASSWORD --dbhost=$WP_CLI_MYSQL_HOST --debug
当我在容器内的bash中运行时没有问题,但是当我尝试运行以下命令时: docker-compose run --rm wordpress-cli --rm core config --dbname=$MYSQL_DATABASE --dbuser=$MYSQL_USER --dbpass=$MYSQL_PASSWORD --dbhost=$WP_CLI_MYSQL_HOST --allow-root --debug 所有的环境变量都在主机中评估,而不是在容器中,因此它们被传递为空到容器中。
我在this question中发现,使用bash -c 'my command'将解决问题,但我的ENTRYPOINT是WP命令,所以我想直接运行而不使用bash命令。
1个回答

3

只需转义$,使其传递到容器中:

docker-compose run --rm wordpress-cli --rm core config --dbname=\$MYSQL_DATABASE --dbuser=\$MYSQL_USER ...

尝试过了,但不起作用,容器将'$MYSQL_DATABASE'作为字符串运行,美元符号在容器内无法使用。 - IAmJulianAcosta
3
在这种情况下,仍然需要使用bash来解释这些变量。没有绕过运行bash -c的方法。 - dnephin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接