volume Ich versuche, docker-compose zu verwenden, um meine php.ini-Datei zu volumieren, so dass ich Änderungen auf meinem lokalen Rechner durchführen kann, um zu sehen, wie es den Host beeinflusst Maschine. Leider war die einzige Möglichkeit, die php.ini-Datei in den Container zu bekommen, direkt während der Erstellung in der Docker-Datei.Docker-Compose wird nicht meine php.ini-Datei
Angehängt ist ein Bild des Containers, das mit den aktuellen Einstellungen läuft.
Mein Dockerfile ist unten:
FROM ubuntu:14.04
MAINTAINER Joe Astrahan <[email protected]>
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"]
Meine Docker-compose.yml Datei unten:
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"
Ich habe versucht, im Anschluss an die Beratung hier, can't upate php.ini file in Docker container , indem Sie eine custom.ini-Datei erstellen und sie in dieser Ort. Ich habe es wirklich richtig gemacht, denn wenn Sie sich mein Bild ansehen, das ich für phpinfo() angehängt habe, sehen Sie, dass unter zusätzlichen ini-Dateien, die analysiert wurden, meine custom.ini am Ende da ist. Ich habe jedoch einen Test gemacht, indem ich asp_tags = On anstelle von Off gesetzt habe und ich kann nicht. phpinfo() wird immer als aus angezeigt. Siehe mein angehängtes Bild, das es zeigt, obwohl ich meine Konfigurationsdatei geladen habe.
Ich bin nicht einmal sicher, ob es überhaupt irgendwelche der Befehle darin respektiert?
Zusätzliche Dateien Gebrauchte
Run
#!/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
Meine Dateistruktur
Ich möchte darauf hinweisen, dass wenn ich versuche, beim Start des Containers direkt in /etc/php/apache2/php.ini zu schreiben, es in einer Art Endlosschleife stecken bleibt? (Im Grunde startet es nie und der Container wird immer wieder neu gestartet) –