4
圖像生成過程中執行腳本在我的Dockerfile
結束時,我有以下幾點:如何泊塢
ENTRYPOINT bash -C '/usr/local/bin/setup_php_settings';'bash'
如果我沒看錯的那/usr/local/bin/setup_php_settings
將每個容器啓動時執行。如果是這樣,那麼我在該腳本中有幾個安裝的東西(比如this ZRay),我想轉移到另一個腳本,在圖像構建過程中只執行一次。
的setup_php_settings
的內容(在內部消除部分ZRay)如下:
#!/bin/bash -x
set -e
PHP_ERROR_REPORTING=${PHP_ERROR_REPORTING:-"E_ALL & ~E_DEPRECATED & ~E_NOTICE"}
sed -ri 's/^display_errors\s*=\s*Off/display_errors = On/g' /etc/php5/apache2/php.ini
sed -ri 's/^display_errors\s*=\s*Off/display_errors = On/g' /etc/php5/cli/php.ini
sed -ri "s/^error_reporting\s*=.*$//g" /etc/php5/apache2/php.ini
sed -ri "s/^error_reporting\s*=.*$//g" /etc/php5/cli/php.ini
echo "error_reporting = $PHP_ERROR_REPORTING" >> /etc/php5/apache2/php.ini
echo "error_reporting = $PHP_ERROR_REPORTING" >> /etc/php5/cli/php.ini
mkdir -p /data/tmp/php/uploads
mkdir -p /data/tmp/php/sessions
mkdir -p /data/tmp/php/xdebug
chown -R www-data:www-data /data/tmp/php*
ln -sf /etc/php5/mods-available/zz-php.ini /etc/php5/apache2/conf.d/zz-php.ini
ln -sf /etc/php5/mods-available/zz-php-directories.ini /etc/php5/apache2/conf.d/zz-php-directories.ini
ln -sf /usr/share/php/libzend-framework-php/Zend/ /usr/share/php/Zend
a2enmod rewrite
php5enmod mcrypt
# Apache gets grumpy about PID pre-existing files
: "${APACHE_PID_FILE:=${APACHE_RUN_DIR:=/var/run/apache2}/apache2.pid}"
rm -f "$APACHE_PID_FILE"
source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND "[email protected]"
的,我怎麼像在建立執行這些新的腳本的問題?使用CMD
?任何其他解決方法?
沒有這麼快,我已經添加了'setup_php_settings'文件的內容,也許要重新檢查你的答案:)我會說根據您的回答,這將是最好有一個用於安裝的獨立的'RUN'命令,你覺得怎麼樣? – ReynierPM
腳本中的所有步驟,除了最後一行之外,都應在映像構建期間運行(即單獨的「RUN」命令)。最後一個看起來更像是我將放在我的dockerfile中的一個'CMD'命令中,雖然我會在dockerfile中用'ENV'命令替換'source'部分(假設這個文件只設置env變量) –
好的,可以你添加一個可能的設置的例子?對不起,我仍然在學習Docker :) – ReynierPM