docker - 一个 Dockerfile 可以扩展另一个吗?

标签 docker dockerfile

我有一个这样的 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/

相关文章:

java - Dockerized Spring Boot 微服务无故卡住

docker - Cloudera快速入门docker : unable to run/start the container

docker - 在dockerfile中指定 “privileged”容器模式?

使用 Dockerfile 预装插件的 WordPress 图像

docker - 在docker-compose up -d之后,Docker容器以代码0退出

php - DOCKER:ERR_EMPTY_RESPONSE - Mac

docker - 错误:对于应用没有此类设备

django - docker 中的应用程序有不同的基础镜像

dockerfile - 如何在 Dockerfile 中使用命令替换

python - Docker如何将python 3.8设为默认