为澄清起见,当我说基础镜像时,我指的是具有所有通用配置的父镜像,因此基于它的子镜像不需要单独下载依赖项。
据我了解, docker-compose.yml 文件是运行时配置,而 Dockerfiles 是构建时配置。但是,有一个build
使用 docker-compose 的选项,我想知道如何使用它来构建基础映像。
截至目前,我使用一个运行其他 shellscript 的 shellscript。一个从它也创建的基本图像构建我所有的图像。另一个将它们作为具有必要配置的容器运行。但是,基本映像永远不会作为容器运行。
目前,我希望将 shellscript 转换为 docker-compose 文件,如下所示:
echo "Creating docker network net1"
docker network create net1
echo "Running api as a container with port 5000 exposed on net1"
docker run --name api_cntr --net net1 -d -p 5000:5000 api_img
echo "Running redis service with port 6379 exposed on net1"
docker run --name message_service --net net1 -p 6379:6379 -d redis
echo "Running celery worker on net1"
docker run --name celery_worker1 --net net1 -d celery_worker_img
echo "Running flower HUD on net1 with port 5555 exposed"
docker run --name flower_hud --net net1 -d -p 5555:5555 flower_hud_img
制作图像的 shellscript 如下:
echo "Building Base Image"
docker build -t base ../base-image
echo "Building api image from Dockerfile"
docker build -t api_img ../api
echo "Building celery worker image"
docker build -t celery_worker_img ../celery-worker
echo "Building celery worker HUD"
docker build -t flower_hud_img ../flower-hud
我的问题归结为一件事,我可以在不使用 docker-compose 在容器中运行它的情况下创建这个基础镜像吗?FROM base:latest
(所有 Dockerfile 都以基础本身以外的开头)。我希望对其他人尽可能简单,以便他们只需要运行一个命令。
编辑:我使用的是版本 3,并且根据文档,build:
被忽略,并且 docker-compose 只接受预构建的图像。