我正在尝试执行 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"]