Wil*_*bok 9 docker dockerfile docker-compose docker-stack
为了澄清,当我说基本图像时,我的意思是具有所有常见配置的父图像,因此基于它的子项不需要单独下载依赖项.
根据我的理解,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
Run Code Online (Sandbox Code Playgroud)
制作图像的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
Run Code Online (Sandbox Code Playgroud)
我的问题归结为一件事,我可以创建这个Base图像,而无需在带有docker-compose的容器中运行它.(所有Dockerfiles都以FROM base:latest基本本身开头).我希望让其他人尽可能轻松,这样他们只需要运行一个命令.
编辑:我使用版本3,并根据文档,build:被忽略,并且docker-compose只接受预先构建的图像.
Seb*_*ner 14
根据 @amiasato 的 anser 进行更多研究,看起来好像有一个replicated密钥,您可以将其设置0为如下:
version: "3"
services:
base-image:
build:
context: .
dockerfile: Dockerfile-base
deploy:
mode: replicated
replicas: 0
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.docker.com/compose/compose-file/compose-file-v3/#replicas
是的,有点。像这样使用它:
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
Run Code Online (Sandbox Code Playgroud)
image子句使docker-compose build生成weblogic-domain为此服务命名的docker映像。即使在相同的构建过程中,该映像也可以被其他服务的Dockerfile重用。
小智 5
您可以实现一个脚本,使用特定标签构建镜像docker build ... -t your_tag,然后运行 docker-compose,而不是运行 docker-compose。在子 dockerfile 中,您可以使用FROM your_tag.
根据文档,build服务选项将目录作为参数,其中包含著名的Dockerfile. 无法先构建基础映像,然后再构建服务的实际映像。
Docker 是应用程序运行的环境。当您创建基础映像时,它应该包含不会经常更改的内容。然后您需要构建一次 baseiamge 并上传到您的存储库并FROM baseimage:latest在 Dockerfile 中使用。
例如,如果您正在构建 python 应用程序,您可以从 python 创建它并安装要求:
FROM python:3.6
COPY requirements.txt .
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
这里python:3.6是基本映像,不会经常更改,因此您无需每次运行 docker compose 命令时都构建它。
| 归档时间: |
|
| 查看次数: |
7626 次 |
| 最近记录: |