无法在Docker容器中更新php.ini文件 [英] can't upate php.ini file in Docker container

查看:1630
本文介绍了无法在Docker容器中更新php.ini文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在试图将Magento2放在Docker与Nginx& PHP7。



我已经按照

应该是:

  memory_limit = 2G 
max_execution_time = 800

我已经检查了PHP容器,我可以看到php.ini文件在那里正确的设置,或者我想?

  $ docker exec -it mymagento2docker_php_1 / bin / bash 
#cat / usr /local/etc/php/php.ini
;该文件由docker build

memory_limit = 2G
max_execution_time = 800

我做错了什么?以下是一些更多的细节,谢谢提前!






Docker项目



 
├──docker-compose.yml
├──index.php
├──magento2
│├──[DIRECTORIES& FILES OMMITED]

├──nginx
│├──Dockerfile
│├──default.conf
│└──nginx.conf
├──output.txt
├──php
├──Dockerfile
└──配置
└──php.ini






docker-compose.yml



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

php:
build:./php/
曝光:
- 9000
links:
- mysql
volumes_from:
- app

app:
image:php:7.0-fpm
volumes:
- ./ magento2:/ var / www / html
命令:true

mysql:
image:mysql:最新
volumes_from:
- 数据
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD:mage2
MYSQL_DATABASE:mage2
MYSQL_USER:mage2
MYSQL_PASSWORD:mage2

数据:
图像:mysql:最新
卷:
- / var / lib / mysql
命令:true

phpmyadmin:
image:phpmyadmin / phpmyadmin
ports:
- 8080:80
链接:
- mysql
环境:
PMA_HOST:mysql






php / Dockerfile



  FROM php: fpm 

#安装依赖项
RUN apt-get update \
&&& apt-get install -y \
cron \
libfreetype6-dev \
libicu-dev \
libjpeg62-turbo-dev \
libmcrypt- dev \
libpng12-dev \
libxslt1-dev

#配置gd库
RUN docker-php-ext-configure \
gd --with-freetype-dir = / usr / include / --with-jpeg-dir = / usr / include /

#安装所需的PHP扩展
RUN docker-php-ext -install \
gd \
intl \
mbstring \
mcrypt \
pdo_mysql \
xsl \
zip \
soap

#安装与php7兼容的xdebug的2.4版本
RUN pecl install -o -f xdebug-2.4.0

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






  ## php / config / php.ini ## 
;该文件由docker build

memory_limit = 2G
max_execution_time = 800



更新



我已经尝试使用下面重新启动nginx,但没有起作用。



$ $ $ $ $ $ $ $ $ $ $ $ $ $ $




$ :没有这样的文件或目录
#service nginx restart
nginx:无法识别的服务
#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
重新启动inx:nginxross在〜/ my-magento2-docker
$ docker-compose ps
名称命令状态端口
------------------ -------------------------------------------------- -------------------------
mymagento2docker_app_1 true退出0
mymagento2docker_data_1 docker-entrypoint.sh true退出0
mymagento2docker_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
mymagento2docker_nginx_1 nginx -g守护程序关闭;退出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
启动mymagento2docker_app_1
启动mymagento2docker_data_1
mymagento2docker_mysql_1是最新的
mymagento2docker_phpmyadmin_1是最新的
mymagento2docker_php_1是最新的
启动mymagento2docker_nginx_1
ross在〜/ my-magento2-docker
$ docker exec -it mymagento2docker_nginx_1 / bin / bash
#service nginx restart
重新启动nginx:nginxross在〜/ my-magento2-docker
$ docker-compose up -d
启动mymagento2docker_app_1
启动mymagento2docker_data_1
mymagento2docker_mysql_1是up-最新
mymagento2docker_phpmyadmin_1是最新的
mymagento2docker_php_1是最新的
启动mymagento2docker_nginx_1
ross在〜/ my-magento2-docker
$ docker exec -it mymagento2docker_nginx_1 / bin / bash
#nginx -s reload
2016/10/05 14:07:43 [notice] 12#12:信号进程启动


解决方案

卷: em> php 服务,在Docker-compose.yml 文件中,将具有 custom.ini 文件的本地目录映射到 / user / local / etc / php / conf.d ,然后重启容器。无论该文件中的有效设置将覆盖主要php.ini文件中的那些。 (顺便提一句,你可以和MySQL一样,但不能用Nginx)。



这个工作在我自己的项目中:



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


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 Project

.
├── 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

UPDATE

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
# 

解决方案

Add a volumes: section to your php service in the docker-compose.yml file, map a local directory with a custom.ini file to /user/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

这篇关于无法在Docker容器中更新php.ini文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆