Ich habe ein Dockerfile für PHP so:
FROM php:7-fpm
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get install -y git libicu-dev libmagickwand-dev libmcrypt-dev libcurl3-dev jpegoptim
RUN pecl install imagick && \
docker-php-ext-enable imagick
RUN docker-php-ext-install intl
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install opcache
RUN docker-php-ext-install mcrypt
RUN docker-php-ext-install curl
RUN docker-php-ext-install Zip
Und ich würde gerne ein weiteres Dockerfile erstellen, das auf dem ersten basiert, aber mit einigen PHP Erweiterungen (für Entwicklerzwecke) hinzugefügt): Xdebug und andere Sachen.
Kann ich ein "dev" -Dockerfile erstellen, das mein Haupt-Dockerfile erweitert (ohne es neu zu schreiben)?
Genau das ist dein FROM php:7-fpm
macht gerade: erweitere das Dockerfile vom php
Bild (mit 7-fpm
tag) mit dem Inhalt Ihrer Docker-Datei.
Nachdem Sie ein Image aus Ihrer Docker-Datei erstellt haben:
docker build -t my-php-base-image .
Sie können dies erweitern, indem Sie eine neue Docker-Datei erstellen, die mit Folgendem beginnt:
FROM my-php-base-image
Die Verwendung von mehrstufiger Aufba ist hier definitiv ein Teil der Antwort.
docker-compose v3.4 target
als vorletzter und letzter.
Hier ist ein Beispiel für das Zusammenleben von 2 Containern (1 normaler & 1 mit installiertem xdebug):
Dockerfile
FROM php:7-fpm AS php_base
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get install -y git libicu-dev libmagickwand-dev libmcrypt-dev libcurl3-dev jpegoptim
RUN pecl install imagick && \
docker-php-ext-enable imagick
RUN docker-php-ext-install intl
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install opcache
RUN docker-php-ext-install mcrypt
RUN docker-php-ext-install curl
RUN docker-php-ext-install Zip
FROM php_base AS php_test
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
docker-compose.yml
version: '3.4'
services:
php:
build:
context: ./
target: php_base
php_test:
build:
context: ./
target: php_test
# ...