Ich bin verwirrt, weil es scheint, dass eine Umgebungsvariable, die in Docker-compose.yml gesetzt Docker verursacht mein Bild auf den Wiederaufbau Docker-komponieren up:Mit env Variablen von Docker komponiert in einem Dockerfile
Dockerfile für apache_php_with_custom_docroot
FROM php:7.1.11-apache-jessie
# Set apache document root
ENV APACHE_DOCUMENT_ROOT /var/www/web
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
ich baue es mit docker build -t apache_php_with_custom_docroot .
docker-compose.yml
version: "3"
services:
web:
image: apache_php_with_custom_docroot
environment:
- APACHE_DOCUMENT_ROOT=/var/www/anotherfolder
So ist das Merkwürdige für mich: Es funktioniert, um den APACHE_DOCUMENT_ROOT zu setzen. Wenn ich rufe docker-compose up -d
Apache verwendet das Docroot /var/www/anotherfolder
.
Ich war mir sicher, als mein Image erstellt wurde, kann ich es in meiner Docker-Compose-Datei nicht ändern. Ich lese etwas über build
Parameter z.B. hier: Docker-compose: Set a variable in env file and use it in Dockerfile
Aber ich habe keine Build-Parameter gesetzt. Woher weiß Docker, dass er mein Image wiederherstellen muss? Wo kann ich über die Prinzipien dahinter lesen?
ein bisschen rostig mit Docker! Soweit ich weiß, ist jede Änderung in docker-compose.yml notwendig, um ein up zu machen (weil docker es liest und das virtuelle Dateisystem und das Container-Verhalten erstellt), also muss ich sie an den entrepoint anhängen, wo Sie können zB eine Datei mit vars lesen und jedes Mal laden, wenn Container gestartet wird ... –