Dockerfile多鏡像構(gòu)建方式
背景
實(shí)際項(xiàng)目經(jīng)常需要構(gòu)建多個(gè)服務(wù)器鏡像,絕大數(shù)情況,除了 Dockerfile 文件中除了 進(jìn)程名不一樣,其他基本是一樣的。
顯然寫多個(gè)重復(fù)的 Dockerfile 不符合程序員思維。
翻了下官方文檔,確實(shí)官方也已經(jīng)給出了解決方案。
官方文檔
官方文檔: https://docs.docker.com/engine/reference/commandline/build/#specifying-target-build-stage---target
不翻墻,通常是打不開(kāi)這個(gè)網(wǎng)頁(yè)的,順手也摘錄下吧:
Specifying target build stage (–target)
When building a Dockerfile with multiple build stages, --target can be used to specify an intermediate build stage by name as a final stage for the resulting image. Commands after the target stage will be skipped.
FROM debian AS build-env
…
FROM alpine AS production-env
…
$ docker build -t mybuildimage --target build-env .
因此基本上你寫的 Dockerfile 會(huì)是這樣子的:
FROM centos:7 AS xxx_base xxxx xxxx xxxx FROM xxx_base AS LoginServer xxxx FROM xxx_base AS Gateway xxxx
構(gòu)建命令類似為:
docker build -t LoginServer --target LoginServer . docker build -t Gateway --target Gateway .
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker容器通過(guò)ping直接運(yùn)行獲取公網(wǎng)IP操作
這篇文章主要介紹了docker容器通過(guò)ping直接運(yùn)行獲取公網(wǎng)IP操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Docker 容器文件系統(tǒng)詳細(xì)介紹(圖文)
這篇文章主要介紹了Docker 容器文件系統(tǒng)詳細(xì)介紹(圖文)的相關(guān)資料,這里對(duì)Docker 容器文件系統(tǒng)進(jìn)行了具體的分析詳解,需要的朋友可以參考下2016-12-12docker-swarm之使用Docker secret管理敏感數(shù)據(jù)
就Docker Swarm集群服務(wù)而言,secret 是塊狀數(shù)據(jù),例如密碼、SSH私鑰、SSL證書或其他不應(yīng)通過(guò)網(wǎng)絡(luò)傳輸或未加密存儲(chǔ)在Dockerfile或應(yīng)用程序源代碼中的數(shù)據(jù),我們可以使用Docker secret 集中管理這些數(shù)據(jù),所以接下來(lái)就帶大家了解一下如何使用Docker secret 管理敏感數(shù)據(jù)2023-08-08

Docker 容器互聯(lián)互通的實(shí)現(xiàn)方法

docker安裝RabbitMq添加用戶實(shí)現(xiàn)方式

Docker學(xué)習(xí)筆記之Weave實(shí)現(xiàn)跨主機(jī)容器互聯(lián)

docker安裝RocketMQ的實(shí)現(xiàn)步驟