Страница 1 из 1

Как манипулировать настройками php.ini в Docker файле?

Добавлено: 2018.11.15, 16:30
EVOSandru6
Добрый день,

Есть docker-compose.yml:

Код: Выделить всё

...
php-fpm:
    build:docker/containers/php-fpm
    volumes:
      - ./.:/var/www
      - ./volumes/php-fpm/php7.1-fpm.ini:/usr/local/etc/php/php.ini
...

./docker/containers/php-fpm/Dockerfile:

Код: Выделить всё

FROM php:7.1-fpm-alpine

RUN apk --update --virtual build-deps add \
        autoconf \
        make \
        gcc \
        g++ \
        libtool \
        icu-dev \
        curl-dev \
        freetype-dev \
        imagemagick-dev \
        pcre-dev \
        postgresql-dev \
        libmcrypt-dev \
        libjpeg-turbo-dev \
        libpng-dev \
        libxml2-dev && \
    apk add \
        git \
        curl \
        bash \
        bash-completion \
        icu \
        imagemagick \
        pcre \
        freetype \
        libmcrypt \
        libintl \
        libjpeg-turbo \
        libpng \
        libltdl \
        libxml2 \
        mysql-client \
        nodejs-npm \
        postgresql && \
    pecl install \
        apcu \
        imagick \
        mcrypt-1.0.0 && \
    docker-php-ext-configure gd \
        --with-gd \
        --with-freetype-dir=/usr/include/ \
        --with-png-dir=/usr/include/ \
        --with-jpeg-dir=/usr/include/ && \
    docker-php-ext-configure bcmath && \
    docker-php-ext-install \
        soap \
        zip \
        curl \
        bcmath \
        exif \
        gd \
        iconv \
        intl \
        mbstring \
        opcache \
        pdo_mysql \
        pdo_pgsql && \
    apk del \
        build-deps

ARG phpIniPath=/usr/local/etc/php/php.ini

RUN sed -ri -e 's/^allow_url_fopen\s*=.*/allow_url_fopen = On/' $phpIniPath
RUN sed -i -e 's/^allow_url_fopen\s*=.*/allow_url_fopen = On/' $phpIniPath
RUN sed -i -e 's/^short_open_tag\s*=.*/short_open_tag = On/' $phpIniPath
RUN sed -i -e 's/^;extension=php_curl.dll\s*=.*/extension=php_curl.dll/' $phpIniPath
RUN echo 'extension = mcrypt.so' >> $phpIniPath

WORKDIR /var/www
При попытке:

Код: Выделить всё

sudo docker-compose up --build -d
Ловлю:

...

Step 8/9 : RUN sed -ri -e 's/^allow_url_fopen\s*=.*/allow_url_fopen = On/' $phpIniPath
---> Running in 84504b5e4c25
sed: /usr/local/etc/php/php.ini: No such file or directory
ERROR: Service 'php-fpm' failed to build: The command '/bin/sh -c sed -ri -e 's/^allow_url_fopen\s*=.*/allow_url_fopen = On/' $phpIniPath' returned a non-zero code: 1



Подскажите на каком моменте можно получить файл /usr/local/etc/php/php.ini в контейнере?

Re: Как манипулировать настройками php.ini в Docker файле?

Добавлено: 2018.11.17, 06:10
nizsheanez
Volume механизм - монтирует директорию после старта контейнера (до запуска приложения в нем). Если надо файл/директорию иметь на стадии билда используй команду ADD в Dockerfile https://docs.docker.com/engine/reference/builder/#add
(см. также COPY)

Re: Как манипулировать настройками php.ini в Docker файле?

Добавлено: 2018.11.17, 06:13
nizsheanez
Так же советую читать Dockerfile на базе которого ты строишь свой (на DockerHub есть ссылки на исходники на Github).
Например тут можно найти что есть уже переменная окружения хранящая путь до .ini файлов https://github.com/docker-library/php/b ... rfile#L153
Лучше использовать ее, вместо создания новой переменной phpIniPath
(в описании на DockerHub это тоже написано, но Dockerfile достаточно простые обычно чтобы их пробежать глазами и выцепить важные моменты)

Re: Как манипулировать настройками php.ini в Docker файле?

Добавлено: 2018.11.17, 12:27
ElisDN

Код: Выделить всё

ADD ./php/defaults.ini /usr/local/etc/php/conf.d/defaults.ini

Re: Как манипулировать настройками php.ini в Docker файле?

Добавлено: 2018.11.17, 14:03
EVOSandru6
nizsheanez писал(а): 2018.11.17, 06:13 Так же советую читать Dockerfile на базе которого ты строишь свой (на DockerHub есть ссылки на исходники на Github).
Например тут можно найти что есть уже переменная окружения хранящая путь до .ini файлов https://github.com/docker-library/php/b ... rfile#L153
Лучше использовать ее, вместо создания новой переменной phpIniPath
(в описании на DockerHub это тоже написано, но Dockerfile достаточно простые обычно чтобы их пробежать глазами и выцепить важные моменты)
Благодарю!

Re: Как манипулировать настройками php.ini в Docker файле?

Добавлено: 2018.11.17, 14:05
EVOSandru6
ElisDN писал(а): 2018.11.17, 12:27

Код: Выделить всё

ADD ./php/defaults.ini /usr/local/etc/php/conf.d/defaults.ini
Благодарю