作者:弱柳纤纤_ | 来源:互联网 | 2023-01-29 12:21
为了澄清,当我说基本图像时,我的意思是具有所有常见配置的父图像,因此基于它的子项不需要单独下载依赖项.
根据我的理解,docker-compose.yml文件是运行时配置,而Dockerfiles是构建时配置.但是,有一个build
使用docker-compose 的选项,我想知道如何使用它来构建基本图像.
截至目前,我使用一个运行其他shellcript的shellcript.一个人构建我的所有图像,从它创建的基本图像.另一个将它们作为具有必要配置的容器运行.但是,基本映像永远不会作为容器运行.
目前,我希望将shellcript改成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
制作图像的shellcript如下:
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
我的问题归结为一件事,我可以创建这个Base图像,而无需在带有docker-compose的容器中运行它.(所有Dockerfiles都以FROM base:latest
基本本身开头).我希望让其他人尽可能轻松,这样他们只需要运行一个命令.
编辑:我使用版本3,并根据文档,build:
被忽略,并且docker-compose只接受预先构建的图像.
1> 小智..:
是的,有点。像这样使用它:
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重用。