Syl*_*ain 2 php docker docker-compose
我正在使用Docker和Docker-compose创建一个Symfony环境(PHP-FPM,Nginx等)。
但是,PHP不使用我的php.ini,而是忽略了配置(在我的Symfony应用程序中找不到date.timezone参数)。
当然,当我进入容器时,date.timezone会在2 php.ini中正确设置(cli和FPM)。
我不明白为什么,但是如果我将php.ini放在/ usr / local / etc / php /文件夹(wtf)中,它将起作用
我错过了什么?
docker-compose.yml:
nginx:
image: nginx
volumes:
- "./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro"
links:
- "php:php"
ports:
- "80:80"
- "443:443"
working_dir: "/etc/nginx"
php:
build: docker/php
volumes:
- ".:/var/www:rw"
working_dir: "/var/www"
Run Code Online (Sandbox Code Playgroud)
Dockerfile的:
FROM php:5-fpm
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get install -y php5-common php5-fpm php5-cli php5-mysql php5-apcu php5-intl php5-imagick && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN sed -i 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' /etc/php5/fpm/php.ini
RUN sed -i 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' /etc/php5/cli/php.ini
RUN usermod -u 1000 www-data
Run Code Online (Sandbox Code Playgroud)
我有一段时间遇到相同的问题,主机具有正确的日期/时间,但是每个php容器都位于格林尼治标准时间而不是欧洲/巴黎或主机日期时间。
对于那些将寻找有效答案并且需要比@moliver答案更多精度的人,sed
在dockerfile中使用也许不是最佳答案。而且,php.ini
可能不会在构建时创建。这是/usr/local/etc/php
我的一个PHP容器中的ls 。
root@6fd7bc929a7e:/usr/local/etc/php/conf.d# ls
docker-php-ext-bcmath.ini docker-php-ext-exif.ini docker-php-ext-mysqli.ini docker-php-ext-soap.ini docker-php-ext-xsl.ini
docker-php-ext-bz2.ini docker-php-ext-gd.ini docker-php-ext-pcntl.ini docker-php-ext-tidy.ini docker-php-ext-zip.ini
docker-php-ext-calendar.ini docker-php-ext-mcrypt.ini docker-php-ext-pdo_mysql.ini docker-php-ext-xmlrpc.ini ext-imagick.ini
Run Code Online (Sandbox Code Playgroud)
(是的,我添加了很多扩展名,但是默认情况下没有php.ini)。
docker-compose非常灵活,您可以添加一个包含php.ini info的卷:version:'2'
services:
php:
build: ./DOCKERFILES/phpdemo
container_name: applicationDEMO
volumes:
- "./conf/whatever.ini:/usr/local/etc/php/conf.d/whatever.ini"
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"
Run Code Online (Sandbox Code Playgroud)
在你的 ./conf/whatever.ini
date.timezone = "Europe/Paris"
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
归档时间: |
|
查看次数: |
8944 次 |
最近记录: |