gpt4 book ai didi

php - 无法更新 Docker 容器中的 php.ini 文件

转载 作者:IT老高 更新时间:2023-10-28 12:39:22 30 4
gpt4 key购买 nike

我正在尝试使用 Nginx 和 PHP7 在 Docker 上设置 Magento2。

我已按照 PHP7 Docker image 的建议添加了一个自定义 php.ini 文件。 .我可以从 phpinfo.php 看到它正在加载我的 php.ini 文件,但我的更新都没有。 enter image description here enter image description here enter image description here

应该是:

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
; This file is created automatically by the 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
    └── 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

更新

我试过用下面的方法重启nginx,但是没用。

$ 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
#

最佳答案

docker-compose.yml 文件中将 volumes: 部分添加到您的 php 服务,使用 映射本地目录>custom.ini 文件到 /usr/local/etc/php/conf.d,然后重启你的容器。该文件中的任何有效设置都将覆盖主 php.ini 文件中的设置。 (顺便说一句,你可以用 MySQL 做同样的事情,但不能用 Nginx)。

这适用于我自己的项目:

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

关于php - 无法更新 Docker 容器中的 php.ini 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39875543/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com