У меня есть файл Dockerfile в моем проекте
FROM php:7.4-fpm-alpine
WORKDIR '/app'
RUN set -ex \
&& apk update && apk upgrade\
# Installations into virtual env so they can be deleted afterwards
# (.phpize-deps is standardized by docker-php-ext-install)
&& apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS \
&& apk add --no-cache --virtual .build-deps \
postgresql-dev \
libstdc++ \
make \
# Installations that should be kept
&& apk add --no-cache \
bash \
wget \
curl \
libbz2 \
libzip-dev \
zlib-dev \
bzip2-dev \
libxslt-dev \
libmcrypt-dev \
libxml2-dev \
libjpeg-turbo-dev \
libpng-dev \
yaml-dev \
libaio-dev \
oniguruma-dev \
php7-bz2 \
php7-pdo php7-pgsql php7-bcmath php7-zmq php7-curl php7-pear \
# unzip \
# ffmpeg \
# Install php extensions
&& docker-php-ext-configure gd --with-jpeg \
&& docker-php-ext-install bcmath bz2 exif gd json mbstring opcache pcntl pdo pdo_pgsql simplexml sockets xsl zip \
&& pecl install apcu-5.1.18 \
&& docker-php-ext-enable apcu \
# Install composer
&& EXPECTED_COMPOSER_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) \
&& php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (hash_file('SHA384', 'composer-setup.php') === '${EXPECTED_COMPOSER_SIGNATURE}') { echo 'Composer.phar Installer verified'; } else { echo 'Composer.phar Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
&& php composer-setup.php --install-dir=/usr/bin --filename=composer \
&& php -r "unlink('composer-setup.php');" \
# Remove unnecessary stuff
&& apk del .phpize-deps .build-deps
# install xdebug
#RUN pecl install xdebug
#RUN wget http://xdebug.org/files/xdebug-2.6.1.tgz
#RUN tar -xvzf xdebug-2.6.1.tgz
#RUN cd xdebug-2.6.1 \
#&& phpize \
#&& ./configure --enable-xdebug \
#&& make \
#&& make install \
#&& cp modules/xdebug.so /usr/local/lib/php/extensions/no-debug-non-zts-20170718 \
#&& echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so' >> /usr/local/etc/php/php.ini \
#&& echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so' >> /etc/php7/php.ini \
#&& echo 'xdebug.remote_enable=true' >> /etc/php7/php.ini \
#&& echo 'xdebug.remote_host=127.0.0.1' >> /etc/php7/php.ini \
#&& echo 'xdebug.remote_port=9000' >> /etc/php7/php.ini \
#&& echo 'xdebug.remote_handler=dbgp' >> /etc/php7/php.ini \
#&& echo 'xdebug.max_nesting_level=512' >> /etc/php7/php.ini
#EXPOSE 22
# Install PDO_PGSQL and APCU
#RUN set -ex \
# && apk --no-cache add \
# postgresql-dev \
# libpq-dev \
# && docker-php-source extract \
# && apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS \
# && pecl install apcu-5.1.12 \
# && docker-php-ext-enable apcu \
# && docker-php-ext-install pdo pdo_pgsql \
# && apk del .phpize-deps
# && docker-php-source delete
WORKDIR /var/www/html
# Use the default PHP production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# custom PHP adjustments
COPY .server/config/php.ini $PHP_INI_DIR/conf.d/zz-usln.ini
# custom PHP-FPM adjustments (zz to make them the last being applied)
COPY .server/config/php-fpm.conf ${PHP_INI_DIR}-fpm.d/zz-usln.conf
RUN sed -ie 's/;daemonize = yes/daemonize = no/g' ${PHP_INI_DIR}-fpm.d/zz-usln.conf
# RUN echo $(locate php-fpm.conf)
# Composer install stuff
COPY composer.* ./
RUN set -ex \
&& composer global require hirak/prestissimo \
&& composer install --prefer-dist --no-interaction --no-dev -a \
&& composer global remove hirak/prestissimo \
# Delete cache directory to reduce size of image
&& rm -rf ~/.composer/cache
# Copy Code
# Excludes etc. are handled by the .dockerignore file
COPY . .
# Generate proxies for production usage
RUN set -ex \
&& composer dump-autoload --no-dev -a \
# RUN chmod +x ./build_environment.sh
# RUN chmod +x ./vendor/bin/doctrine
# RUN bash ./build_environment.sh -g local
&& ./vendor/bin/doctrine orm:generate-proxies \
# Re-generate autoload files with all the files copies
&& composer dump-autoload --no-dev -a
# Output log to stdout (only works after container has been started, this is why this is the last command)
# && ln -sf /proc/self/fd/1 logs/app.log
RUN chown -R www-data:www-data ./logs/
RUN chown -R www-data:www-data ./tmp/
# fastcgi/php-fpm server available on port 9000, needs extra nginx to be able to serve http
EXPOSE 9000
запущено docker build .
работает 100%
Когда я пытаюсь открыть контейнер, он выходит с кодом ошибки 70.
Я думаю, что это как-то связано с PHP FPM из-за кода ошибки, но я не могу понять, в чем проблема.
EDIT
Вот docker-compose.yml
version: '3.1'
services:
api-backend:
build: ./
ports:
- 9000:9000
volumes:
- ./:/var/www/html:rw
user: 1000:1000
environment:
- "RDS_HOST=${RDS_HOST}"
- "RDS_PORT=${RDS_PORT}"
- "RDS_USER=${RDS_USER}"
- "RDS_DB=${RDS_DB}"
- "RDS_PW=${RDS_PW}"
- "USLN_CONFIG_FILE=${USLN_CONFIG_FILE}"
command: bash -c "vendor/bin/doctrine orm:generate-proxies && php-fpm"
links:
- 'postgres-backend'
depends_on:
- 'postgres-backend'
nginx-backend:
image: nginx:latest
ports:
- 8000:80
links:
- 'api-backend'
volumes:
- ./.nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- 'api-backend'
postgres-backend:
image: postgres:10.7
environment:
- "POSTGRES_PASSWORD=${RDS_PW}"
ports:
- 5432:5432