gpt4 book ai didi

构建基础镜像的 Docker-compose.yml 文件,然后基于它的子镜像?

转载 作者:IT老高 更新时间:2023-10-28 21:22:35 36 4
gpt4 key购买 nike

为了澄清,当我说基础镜像时,我是指具有所有通用配置的父镜像,因此基于它的子镜像不需要单独下载依赖项。

据我了解,docker-compose.yml 文件是运行时配置,而 Dockerfiles 是构建时配置。但是,有一个使用 docker-compose 的 build 选项,我想知道如何使用它来构建基础镜像。

截至目前,我使用一个运行其他 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 在容器中运行它的情况下创建此基础镜像。 (所有 Dockerfile 都以 FROM base:latest 开头,而不是 base 本身)。我希望对其他人来说尽可能简单,以便他们只需要运行一个命令。

编辑:我使用的是版本 3,根据文档,build: 被忽略,并且 docker-compose 只接受预构建的图像。

最佳答案

是的,有点。像这样使用它:

version: '2'

services:

wls-admin:
container_name: wls-admin
image: weblogic-domain
build:
context: wls-admin
args:
- ADMIN_PORT=${WLS_ADMIN_PORT}
- CLUSTER_NAME=${WLS_CLUSTER_NAME}
- PRODUCTION_MODE=dev
networks:
- wls-network
此处的

image 子句使 docker-compose build 为该服务生成名为 weblogic-domain 的 docker 镜像。这个镜像可以被其他服务的 Dockerfile 重用,即使在同一个构建过程中。

关于构建基础镜像的 Docker-compose.yml 文件,然后基于它的子镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45173574/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com