PHP 7,4 ф / мин-альпийский Docker контейнер выходит с кодом 70 - PullRequest
0 голосов
/ 04 августа 2020

У меня есть файл 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
...