我正在尝试使用docker-compose来扩展我的php.ini文件,这样我就可以在我的本地机器上动态更改,看看它如何影响主机.不幸的是,到目前为止,在Dockerfile中创建时,我能够将php.ini文件放入容器的唯一方法就是直接.

附件是使用下面的当前设置正常运行的容器图像.

qWhvO.png

我的Dockerfile如下:

FROM ubuntu:14.04

MAINTAINER Joe Astrahan

VOLUME ["/var/www"]

RUN apt-get update && \

apt-get install -y software-properties-common && \

apt-get update && \

apt-get install -y \

apache2 \

curl \

libcurl3 \

libcurl3-dev \

php5 \

php5-cli \

libapache2-mod-php5 \

php5-gd \

php5-json \

php5-ldap \

php5-mysqlnd \

php5-pgsql \

php5-curl \

mysql-client

COPY config/php.ini /etc/php5/apache2/php.ini

# install php-5.5.30

COPY config/install_php-5.5.30.sh /tmp/install_php-5.5.30.sh

RUN /bin/bash /tmp/install_php-5.5.30.sh

COPY config/apache_default.conf /etc/apache2/sites-available/000-default.conf

COPY config/run /usr/local/bin/run

RUN chmod +x /usr/local/bin/run

RUN a2enmod rewrite

#This will allow us to modify files in the container for testing if we need to

RUN apt-get update && \

apt-get install -y vim

EXPOSE 80

CMD ["/usr/local/bin/run"]

我的docker-compose.yml文件如下:

version: '2'

services:

dblive:

image: mysql:5.5.52

volumes:

- ./db_data_live:/var/lib/mysql

restart: always

environment:

MYSQL_ROOT_PASSWORD: ****

MYSQL_DATABASE: ****

MYSQL_USER: ****

MYSQL_PASSWORD: ****

dbdev:

image: mysql:5.5.52

volumes:

- ./db_data_dev:/var/lib/mysql

restart: always

environment:

MYSQL_ROOT_PASSWORD:****

MYSQL_DATABASE: ****

MYSQL_USER: ****

MYSQL_PASSWORD: ****

phpmyadmin:

depends_on:

- dblive

- dbdev

image: phpmyadmin/phpmyadmin

environment:

PMA_ARBITRARY : 1

restart: always

ports:

- "8081:80"

web:

build: ./

depends_on:

- dblive

- dbdev

volumes:

- ./web:/var/www

- ./config/php.ini:/etc/php5/apache2/conf.d/custom.ini

- ./logs/apache_error.log:/var/log/apache2/error.log

- ./logs/apache_access.log:/var/log/apache2/access.log

- ./config/apache_default.conf:/etc/apache2/sites-enabled/000-default.conf

restart: always

ports:

- "80:80"

- "443:443"

我尝试按照这里的建议can’t upate php.ini file in Docker container,创建一个custom.ini文件并将其安装在该位置.我实际上是正确地做了我认为因为如果你看看我为phpinfo()附加的图像,你可以看到在解析的其他.ini文件下我的custom.ini就在最后.我做了一个测试,虽然设置asp_tags = On而不是Off,我不能. phpinfo()将始终显示为关闭.尽管加载了我的配置文件,请参考我附带的图片显示它.

我甚至不确定它是否真的尊重那里的任何命令?

jFtAj.png

48moq.png

使用的额外文件

#!/bin/bash

set -e

PHP_ERROR_REPORTING=${PHP_ERROR_REPORTING:-"E_ALL & ~E_DEPRECATED & ~E_NOTICE"}

sed -ri 's/^display_errors\s*=\s*Off/display_errors = On/g' /etc/php5/apache2/php.ini

sed -ri 's/^display_errors\s*=\s*Off/display_errors = On/g' /etc/php5/cli/php.ini

sed -ri "s/^error_reporting\s*=.*$//g" /etc/php5/apache2/php.ini

sed -ri "s/^error_reporting\s*=.*$//g" /etc/php5/cli/php.ini

echo "error_reporting = $PHP_ERROR_REPORTING" >> /etc/php5/apache2/php.ini

echo "error_reporting = $PHP_ERROR_REPORTING" >> /etc/php5/cli/php.ini

source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND

install_php-5.5.30.sh

#!/bin/bash

# install dependencies

apt-get -y update && \

apt-get install -y \

build-essential \

apache2-dev \

libxml2-dev

# download PHP 5.5.30 source code

cd /tmp

curl -fsSL http://php.net/get/php-5.5.30.tar.bz2/from/this/mirror | tar xjf -

cd php-5.5.30

# configure build options

./configure --prefix=/usr \

--with-config-file-path=/etc/php5/apache2 \

--with-config-file-scan-dir=/etc/php5/apache2/conf.d \

--disable-pdo \

--disable-json \

--enable-mbstring \

--with-apxs2

# compile and install

NUM_CORES=`cat /proc/cpuinfo | grep processor | wc -l`

make -j $NUM_CORES

make install

# configure extension directory

echo 'extension_dir="/usr/lib/php5/20121212"' >> /etc/php5/apache2/php.ini

# cleanup

rm -rf /tmp/php-5.5.30 /tmp/install_php-5.5.30.sh

我的文件结构

9uu5Y.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐