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

Hub*_*NNN 8 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
Run Code Online (Sandbox Code Playgroud)

基础dockerfile

FROM php:7.2-fpm-alpine

RUN docker-php-ext-install bcmath
... and other extensions
Run Code Online (Sandbox Code Playgroud)

以及其他 dockerfiles(有小的变化):

php-fpm

FROM my-docker-compose:php

RUN docker-php-ext-install php-fpm

CMD php-fpm 
Run Code Online (Sandbox Code Playgroud)

php-cron

FROM my-docker-compose:php

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

CMD crond 
Run Code Online (Sandbox Code Playgroud)

RQD*_*QDQ 1

通常,您可以通过将基础映像存储在 Docker 注册表中来实现此目的。您可以将它们存储在公共注册表(https://hub.docker.com)或一些私有注册表中(托管在云端或本地)。

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

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

  • 我了解注册表,但那是为了稳定的成品图像。我正在寻找一个本地开发解决方案,可以在我的计算机上 100% 处理,可能在单个 docker-compose 中。 (4认同)