我有一个用于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的基础上创建另一个Dockerfile,但添加了一些PHP扩展(出于开发目的):Xdebug和其他东西。
我可以创建一个"dev“Dockerfile来扩展我的主Dockerfile (不重写它)吗?
发布于 2016-04-02 02:23:42
这正是您的FROM php:7-fpm正在做的:使用Dockerfile文件的内容从php镜像(带有7-fpm标记)扩展Dockerfile文件。
因此,在从Dockerfile构建镜像之后:
docker build -t my-php-base-image .您可以通过创建一个以以下内容开头的新Dockerfile来对其进行扩展:
FROM my-php-base-image发布于 2018-11-14 04:42:40
使用multi-stage build绝对是这里答案的一部分。
docker-compose v3.4 target是第二个也是最后一个。
下面是两个容器(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 xdebugdocker-compose.yml
version: '3.4'
services:
php:
build:
context: ./
target: php_base
php_test:
build:
context: ./
target: php_test
# ...发布于 2021-01-05 01:52:47
如果您不想标记第一个Docker文件以便在下一个Docker文件的FROM指令中使用它,而您正在使用Docker 20.10+,您也可以这样做:
# syntax = edrevo/dockerfile-plus
INCLUDE+ Dockerfile.base
RUN whateverINCLUDE+指令由Dockerfile中的第一行导入。您可以在https://github.com/edrevo/dockerfile-plus上阅读有关dockerfile-plus的更多信息
https://stackoverflow.com/questions/36362233
复制相似问题