2016-12-16 34 views
1

我有以下一行腳本:找不到ENVIROMENTAL參數

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 

但由於某些原因,我得到的錯誤:

error: database is uninitialized and password option is not specified You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD

這意味着,由於某種原因,無法找到$WORDPRESS_MYSQL_ROOT_PASSWORD ENVIROMENTAL參數。你能幫我解釋爲什麼嗎?

+0

東西是'WORDPRESS_MYSQL_ROOT_PASSWORD'應該更換'MYSQL_ROOT_PASSWORD','MYSQL_ALLOW_EMPTY_PASSWORD'或'MYSQL_RANDOM_ROOT_PASSWORD'之一?您是否嘗試設置其中一個變量而不是'WORDPRESS_MYSQL_ROOT_PASSWORD'? – Ksyqo

+0

否因爲我像這樣運行它以恢復https://github.com/ellakcy/piwik-with-wordpress的音量並使用相同的參數。 –

回答

2

這可不行,因爲設置一個變量

env FOO=BAR cmd 

不作變量FOO提供給shell來擴展它在

-e MYSQL_USER=$FOO 

換句話說,它失敗出於同樣的原因

FOO=BAR echo $FOO 

不輸出BAR 。它在之前擴展$FOO它調用echo。你明白了嗎?相反,你應該使用沿着

FOO=BAR; echo $FOO 
+0

那麼爲什麼這個腳本的工作:https://gist.github.com/pc-magas/978aeeb512be10647c8af67c6ba0c7f7我使用與上面的腳本相同的理念。 –

+0

@DimitriosDesyllas因爲該腳本不包含任何'$ FOO',因此在命令執行之前shell會展開。它用'env'設置所有的環境變量。所以你不要在那裏使用「相同的哲學」。 – Jens