我有一个这样的 PHP Dockerfile:
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
我想创建另一个 Dockerfile,基于第一个,但添加了一些 PHP 扩展(用于开发目的):Xdebug 和其他东西。
我可以创建一个“开发”Dockerfile 来扩展我的主 Dockerfile(无需重写)吗?
最佳答案
使用 multi-stage build绝对是这里答案的一部分。
docker-compose v3.4 target
是第二个也是最后一个。
这是一个有 2 个容器(1 个普通容器和 1 个安装了 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
# ...
关于docker - 一个 Dockerfile 可以扩展另一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36362233/