根據官方[php][1]
圖像,我有以下Dockerfile用於php運行時。Docker - 安裝卷後執行命令
FROM php:fpm
WORKDIR /var/www/root/
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
zip \
unzip \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install mysqli \
&& docker-php-ext-enable opcache \
&& php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');" \
&& mv composer.phar /usr/local/bin/composer
我在運行時遇到問題composer install
。
我猜測的Dockerfile運行安裝卷之前,因爲我收到一個composer.json
找不到文件的錯誤,如果添加:
...
&& mv composer.phar /usr/local/bin/composer \
&& composer install
以上。
但是,把下面的屬性docker-compose.yml
:
command: sh -c "composer install && composer require drush/drush"
似乎在命令執行完畢後終止容器。
有沒有一種辦法:
- 等待捲成爲安裝
- 運行
composer install
使用安裝composer.json
文件 - 有容器保持運行afters
?
Dude隨着Composer的每一個新版本的移除,經常更換哈希檢查。順便說一下,您希望讓您的自定義入口點在容器啓動時進行安裝。另外,您應該將您的應用程序數據移動到僅限數據的容器,以便您可以分解責任。然後,您的應用程序可以獨立於Web服務器的基礎架構進行部署。祝你好運 –
@mike你能提供一個使用數據專用容器的例子,以及它如何與docker-compose一起使用?或者,提供一個你認爲很好地描述這個概念的資源?或兩者? :-) cheers –
在網上有很多例子可以找到,只需查找'data only container'或'docker persistence strategy'。你所做的只是構建你的應用程序(作曲家安裝/文檔/資產等),然後獲得最小的圖像(144字節圖像可用!),並將所有內容複製到它。使用docker-compose中的'volumes_from'指令將該數據裝載到php映像中的apache根目錄。所有這些都可以通過Jenkins,Gitlab等任何CI/CD系統來實現。 –