首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个Dockerfile可以扩展另一个Dockerfile吗?

一个Dockerfile可以扩展另一个Dockerfile吗?
EN

Stack Overflow用户
提问于 2016-04-02 01:19:01
回答 3查看 57.1K关注 0票数 87

我有一个用于PHP的Dockerfile,如下所示:

代码语言:javascript
复制
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的基础上创建另一个Dockerfile,但添加了一些PHP扩展(出于开发目的):Xdebug和其他东西。

我可以创建一个"dev“Dockerfile来扩展我的主Dockerfile (不重写它)吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-02 02:23:42

这正是您的FROM php:7-fpm正在做的:使用Dockerfile文件的内容从php镜像(带有7-fpm标记)扩展Dockerfile文件。

因此,在从Dockerfile构建镜像之后:

代码语言:javascript
复制
docker build -t my-php-base-image .

您可以通过创建一个以以下内容开头的新Dockerfile来对其进行扩展:

代码语言:javascript
复制
FROM my-php-base-image
票数 15
EN

Stack Overflow用户

发布于 2018-11-14 04:42:40

使用multi-stage build绝对是这里答案的一部分。

docker-compose v3.4 target是第二个也是最后一个。

下面是两个容器(1个普通容器和1个安装了xdebug的容器)共存的示例:

Dockerfile

代码语言:javascript
复制
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

代码语言:javascript
复制
version: '3.4'

services:
  php:
    build:
      context: ./
      target: php_base

  php_test:
    build:
      context: ./
      target: php_test
  
# ...
票数 67
EN

Stack Overflow用户

发布于 2021-01-05 01:52:47

如果您不想标记第一个Docker文件以便在下一个Docker文件的FROM指令中使用它,而您正在使用Docker 20.10+,您也可以这样做:

代码语言:javascript
复制
# syntax = edrevo/dockerfile-plus

INCLUDE+ Dockerfile.base

RUN whatever

INCLUDE+指令由Dockerfile中的第一行导入。您可以在https://github.com/edrevo/dockerfile-plus上阅读有关dockerfile-plus的更多信息

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36362233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档