如何在docker-compose中创建基础映像

时间:2018-10-10 11:41:01

标签: docker docker-compose

我有一些共享通用代码但不完全相同的图像。 有没有一种方法可以在docker-compose中创建基础映像,以便在执行docker-compose up时它不会自身运行,并且可以在Dockerfiles中对其进行扩展?

以下是我要实现的示例:

version: '3'
services:
    php:
        build:
            context: .
            dockerfile: ./php/Dockerfile

    php-fpm:
        build:
            context: .
            dockerfile: ./php-fpm/Dockerfile

    php-cron:
        build:
            context: .
            dockerfile: ./php-cron/Dockerfile

    php-worker:
        build:
            context: .
            dockerfile: ./php-worker/Dockerfile

基本dockerfile

FROM php:7.2-fpm-alpine

RUN docker-php-ext-install bcmath
... and other extensions

以及其他dockerfiles(变化很小):

php-fpm

FROM my-docker-compose:php

RUN docker-php-ext-install php-fpm

CMD php-fpm 

php-cron

FROM my-docker-compose:php

COPY php/crontab /tmp/crontab
RUN /usr/bin/crontab -u www-data /tmp/crontab

CMD crond 

1 个答案:

答案 0 :(得分:1)

通常,您可以通过将基本映像存储在Docker注册表中来完成此操作。您既可以将它们存储在公共注册表(https://hub.docker.com)中,也可以将它们存储在私有注册表中(可以将其托管在本地云中)。

以下是有关Docker注册表的更多信息: https://docs.docker.com/registry/

有关使用基本图像的一些其他信息: https://docs.docker.com/develop/develop-images/baseimages/