web-dev-qa-db-fra.com

ne peut pas mettre à jour le fichier php.ini dans le conteneur Docker

J'essaie de définir Magento2 sur Docker avec Nginx et PHP7.

J'ai ajouté un fichier php.ini personnalisé comme recommandé par PHP7 Docker image . Je vois depuis phpinfo.php que le fichier php.ini est en train de charger, mais aucune de mes mises à jour ne se trouve là-bas .  enter image description here  enter image description here  enter image description here

CA devrait etre:

memory_limit = 2G
max_execution_time = 800

J'ai vérifié le conteneur PHP et je peux voir que le fichier php.ini est là avec les paramètres corrects, ou alors je pense?

$ docker exec -it mymagento2docker_php_1 /bin/bash 
# cat /usr/local/etc/php/php.ini                                                                                                                  
; This file is created automatically by the docker build

memory_limit = 2G
max_execution_time = 800

Qu'est-ce que je fais mal? Ci-dessous quelques détails supplémentaires, merci d'avance!


Projet Docker

.
├── docker-compose.yml
├── index.php
├── magento2
│   ├── [DIRECTORIES & FILES OMMITED]
│                   
├── nginx
│   ├── Dockerfile
│   ├── default.conf
│   └── nginx.conf
├── output.txt
├── php
    ├── Dockerfile
    └── config
        └── php.ini

docker-compose.yml

nginx:
    build: ./nginx/
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - app

php:
    build: ./php/
    expose:
        - 9000
    links:
        - mysql
    volumes_from:
        - app

app:
    image: php:7.0-fpm
    volumes:
        - ./magento2:/var/www/html
    command: "true"

mysql:
    image: mysql:latest
    volumes_from:
        - data
    ports:
        - "3306:3306"        
    environment:
        MYSQL_ROOT_PASSWORD: mage2
        MYSQL_DATABASE: mage2
        MYSQL_USER: mage2
        MYSQL_PASSWORD: mage2 

data:
    image: mysql:latest
    volumes:
        - /var/lib/mysql
    command: "true"

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - 8080:80
    links:
        - mysql
    environment:
        PMA_Host: mysql    

php/Dockerfile

FROM php:7.0-fpm

# Install dependencies
RUN apt-get update \
  && apt-get install -y \
    cron \
    libfreetype6-dev \
    libicu-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng12-dev \
    libxslt1-dev

# Configure the Gd library
RUN docker-php-ext-configure \
  Gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/

# Install required PHP extensions
RUN docker-php-ext-install \
  Gd \
  intl \
  mbstring \
  mcrypt \
  pdo_mysql \
  xsl \
  Zip \
  soap

# Install the 2.4 version of xdebug that's compatible with php7
RUN pecl install -o -f xdebug-2.4.0

COPY config/php.ini /usr/local/etc/php/

## php/config/php.ini ##
; This file is created automatically by the docker build

memory_limit = 2G
max_execution_time = 800

METTRE À JOUR

J'ai essayé de redémarrer nginx avec le ci-dessous, mais cela n'a pas fonctionné.

$ docker exec -it mymagento2docker_php_1 /bin/bash 
# /etc/init.d/nginx restart                                                                                                                       
bash: /etc/init.d/nginx: No such file or directory
# service nginx restart    
nginx: unrecognized service
# nginx -s reload          
bash: nginx: command not found
# exit
$ docker restart mymagento2docker_nginx_1
mymagento2docker_nginx_1

$ docker exec -it mymagento2docker_nginx_1 /bin/bash 
# /etc/init.d/nginx restart                                                                                                                                   
Restarting nginx: nginxross in ~/my-magento2-docker
$ docker-compose ps
            Name                          Command             State            Ports          
---------------------------------------------------------------------------------------------
mymagento2docker_app_1          true                          Exit 0                          
mymagento2docker_data_1         docker-entrypoint.sh true     Exit 0                          
mymagento2docker_mysql_1        docker-entrypoint.sh mysqld   Up       0.0.0.0:3306->3306/tcp 
mymagento2docker_nginx_1        nginx -g daemon off;          Exit 0                          
mymagento2docker_php_1          php-fpm                       Up       9000/tcp               
mymagento2docker_phpmyadmin_1   /run.sh phpmyadmin            Up       0.0.0.0:8080->80/tcp   
ross in ~/my-magento2-docker
$ docker-compose up -d
Starting mymagento2docker_app_1
Starting mymagento2docker_data_1
mymagento2docker_mysql_1 is up-to-date
mymagento2docker_phpmyadmin_1 is up-to-date
mymagento2docker_php_1 is up-to-date
Starting mymagento2docker_nginx_1
ross in ~/my-magento2-docker
$ docker exec -it mymagento2docker_nginx_1 /bin/bash 
# service nginx restart                                                                                                                                       
Restarting nginx: nginxross in ~/my-magento2-docker
$ docker-compose up -d
Starting mymagento2docker_app_1
Starting mymagento2docker_data_1
mymagento2docker_mysql_1 is up-to-date
mymagento2docker_phpmyadmin_1 is up-to-date
mymagento2docker_php_1 is up-to-date
Starting mymagento2docker_nginx_1
ross in ~/my-magento2-docker
$ docker exec -it mymagento2docker_nginx_1 /bin/bash 
# nginx -s reload                                                                                                                                             
2016/10/05 14:07:43 [notice] 12#12: signal process started
# 
15
Holly

Ajoutez une section volumes: à votre service php dans le fichier docker-compose.yml, mappez un répertoire local avec un fichier custom.ini sur / usr/local/etc/php/conf.d et redémarrez votre conteneur. Quels que soient les paramètres valides de ce fichier, ceux du fichier php.ini principal seront prioritaires. (Incidemment, vous pouvez faire la même chose avec MySQL mais pas avec Nginx).

Cela fonctionne dans mon propre projet:

php: volumes: - ./localpath/custom.ini:/usr/local/etc/php/conf.d/custom.ini

23
otravers

je pense que vous devez recharger la configuration nginx . Je ne sais pas quel système d’exploitation utilise votre conteneur php, mais essayez à l’intérieur de celui-ci certaines de ces solutions:

# /etc/init.d/nginx restart

# service nginx restart

# nginx -s reload

ma raison logique est que vous installez php (et le démarrez en même temps) et que vous copiez la nouvelle configuration.

0
Gabbax0r