简体   繁体   English

在不使用bash -c的docker run中使用容器环境变量

[英]Use container environment variable in docker run without using bash -c

I have a WP-CLI container where I have to run the following command: 我有一个WP-CLI容器,必须在其中运行以下命令:

wp --allow-root core config --dbname=$MYSQL_DATABASE --dbuser=$MYSQL_USER --dbpass=$MYSQL_PASSWORD --dbhost=$WP_CLI_MYSQL_HOST --debug

When I run in bash inside container, I have no problem, but when I try to do: 当我在容器内的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

All environment variables are evaluated in the host instead of the container, so they are passed empty to container. 所有环境变量都是在主机而不是容器中求值的,因此它们将空传递给容器。

I found in this question , that using bash -c 'my command' will do the trick, but my ENTRYPOINT is the WP command, so I want to just run without using the bash command. 我在这个问题中发现,使用bash -c 'my command' ENTRYPOINT bash -c 'my command'可以解决问题,但是我的ENTRYPOINT是WP命令,因此我想不使用bash命令就可以运行。

只需转义$它们传递到容器:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM