找不到环境参数

时间:2016-12-16 16:37:12

标签: bash docker environment-variables

我有以下一行脚本:

sudo env WORDPRESS_MYSQL_ROOT_PASSWORD="passwd" \
    WORDPRESS_MYSQL_USER="wordpress" \
    WORDPRESS_MYSQL_PASSWORD="wordpress" \
    WORDPRESS_ADMIN_USER="admin" \
    WORDPRESS_ADMIN_PASSWORD="admin" \
    WORDPRESS_URL="http://0.0.0.0:8080" \
    docker run \
        --volume "/home/pcmagas/Kwdikas/docker/piwik-with-wordpress/scripts/../data/wordpress/db":/var/lib/mysql \
        --volume /home/pcmagas/Kwdikas/docker/piwik-with-wordpress/scripts/../restore/wordpress/db:/docker-entrypoint-initdb.d \
        -e MYSQL_ROOT_PASSWORD=$WORDPRESS_MYSQL_ROOT_PASSWORD \
        -e MYSQL_DATABASE="wordpress" \
        -e MYSQL_USER=$WORDPRESS_MYSQL_USER \
        -e MYSQL_PASSWORD=$WORDPRESS_MYSQL_PASSWORD \
    mariadb

但由于某种原因,我收到错误:

  

错误:数据库未初始化且未指定密码选项     您需要指定MYSQL_ROOT_PASSWORD,MYSQL_ALLOW_EMPTY_PASSWORD和MYSQL_RANDOM_ROOT_PASSWORD之一

这意味着由于某种原因无法找到$WORDPRESS_MYSQL_ROOT_PASSWORD环境参数。你能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

这不起作用,因为使用

设置变量
env FOO=BAR cmd

不会使变量FOO可用于在

中展开它
-e MYSQL_USER=$FOO

换句话说,它失败的原因与

相同
FOO=BAR echo $FOO

不会输出BAR。在调用$FOO之前,shell会扩展echo 。你明白了吗?相反,你应该使用

FOO=BAR; echo $FOO