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"]