Dockerコンテナの入力スクリプトを実行しようとしています。私はphp-fpm alpine linux(バージョン7.3)でこのイメージを作成しました。コンテナが起動したら、事前にいくつかのコマンドを実行する必要があります。 Dockerコンテナは単一プロセス用であることがわかります。ただし、単一のコマンドを実行するために別のコンテナを起動することはできません。だから私はこれを行うために入力スクリプトを実行しています。ここでは、いくつかのコマンドを実行するためにデフォルトプロセスを一時的に停止し、php-fpm.confのデフォルトプロセスを再起動する必要があります。そのため、通常はスクリプトでset -mコマンドを使用し、php-fpmを一時停止してバックグラウンドで実行します。コマンドの実行後、php-fpmはfg%1コマンドを使用してフォアグラウンドに戻ります。以下は私のエントリポイントスクリプトです。 my_wrapper_script.sh。
#!/bin/bash
set -m
php-fpm &
php artisan swagger-lume:generate
fg %1
以下は私のDockerfileです。
FROM php:7.3-fpm-alpine
WORKDIR /var/www
RUN apk update && apk add \
postgresql-dev \
build-base \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
libzip-dev \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl
RUN docker-php-ext-install pdo_pgsql pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd
RUN addgroup -g 1000 -S www && \
adduser -u 1000 -S www -G www
USER www
ADD ./my_wrapper_script.sh /usr/sbin/my_wrapper_script.sh
COPY --chown=www:www . /var/www
EXPOSE 9000
ENTRYPOINT ["sh","/usr/sbin/my_wrapper_script.sh"]