Hol*_*lly 22 php nginx php-ini docker dockerfile
我正试图用Nginx和PHP7在Docker上设置Magento2.
我已经按照PHP7 Docker镜像的建议添加了一个自定义的php.ini文件.我可以从phpinfo.php看到它正在加载我的php.ini文件,但我的更新都没有.

它应该是:
memory_limit = 2G
max_execution_time = 800
Run Code Online (Sandbox Code Playgroud)
我检查了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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?以下是一些更多细节,提前感谢!
.
??? docker-compose.yml
??? index.php
??? magento2
? ??? [DIRECTORIES & FILES OMMITED]
?
??? nginx
? ??? Dockerfile
? ??? default.conf
? ??? nginx.conf
??? output.txt
??? php
??? Dockerfile
??? config
??? php.ini
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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/
Run Code Online (Sandbox Code Playgroud)
## php/config/php.ini ##
; This file is created automatically by the docker build
memory_limit = 2G
max_execution_time = 800
Run Code Online (Sandbox Code Playgroud)
我尝试用下面的方法重新启动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
#
Run Code Online (Sandbox Code Playgroud)
otr*_*ers 31
在docker-compose.yml文件中向您的php服务添加一个卷:部分,将一个带有custom.ini文件的本地目录映射到/usr/local/etc/php/conf.d,然后重新启动容器.该文件中的任何有效设置都将覆盖主php.ini文件中的设置.(顺便说一句,你可以用MySQL做同样的事情但不能用Nginx做同样的事情).
这适用于我自己的项目:
php:
volumes:
- ./localpath/custom.ini:/usr/local/etc/php/conf.d/custom.ini
我认为你必须重新加载 nginx 配置。我不知道您的 php 容器使用哪个操作系统,但请在容器内部尝试其中一些:
# /etc/init.d/nginx restart
# service nginx restart
# nginx -s reload
Run Code Online (Sandbox Code Playgroud)
我的逻辑原因是,您安装 php (并同时启动它),毕竟您复制了新配置。
| 归档时间: |
|
| 查看次数: |
32624 次 |
| 最近记录: |