I'm trying to set Magento2 on Docker with Nginx & PHP7.
I've added a custom php.ini file as recommended by the PHP7 Docker image. I can see from phpinfo.php that it's loading my php.ini file but none of my updates are there.
It should be:
memory_limit = 2G max_execution_time = 800
I've checked the PHP container and I can see the php.ini file is there with the correct settings, or so I think?
$ 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
What am I doing wrong? Below are some more details, thanks in advance!
. ├── docker-compose.yml ├── index.php ├── magento2 │ ├── [DIRECTORIES & FILES OMMITED] │ ├── nginx │ ├── Dockerfile │ ├── default.conf │ └── nginx.conf ├── output.txt ├── php ├── Dockerfile └── config └── php.ini
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
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
I've tried restarting nginx with the below, but it did not work.
$ 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 #
Unfortunately, PHP is looking for the default php. ini file at the default path. Files named ini-development or ini-production are not accepted. Other ini files can be loaded from a different location: /usr/local/etc/php/conf.
ini-development contains settings suitable for development environment and php. ini-production contains settings suitable for production environment. As per your requirement, you need take backup of anyone of the file and rename that file to php. ini .
Add a volumes: section to your php service in the docker-compose.yml file, map a local directory with a custom.ini file to /usr/local/etc/php/conf.d, and restart your container. Whatever valid settings in that file will override those from the main php.ini file. (Incidentally you can do the same with MySQL but not with Nginx).
This works in my own project:
php: volumes: - ./localpath/custom.ini:/usr/local/etc/php/conf.d/custom.ini
i think you have to reload the nginx config. i dont know which OS your php container uses, but try inside of the container some of these:
# /etc/init.d/nginx restart # service nginx restart # nginx -s reload
my logical reason is, that you install php ( and start it at the same time ) and after all you copy the new config.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With