4 回答

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
這是我的問題,我以這種方式找到了它對(duì)于開發(fā),您可以綁定一個(gè)卷。在這個(gè)例子中,我假設(shè)你已經(jīng)在 3000 上暴露了一個(gè)端口,而不是一個(gè)絕對(duì)項(xiàng)目地址注意如果你在你的 shell 中的項(xiàng)目目錄中,你可以使用 $(pwd)
docker run -d -p 3000:3000 -v absolute-project-address:/app image-name
你也可以添加你的卷名來存儲(chǔ)數(shù)據(jù)
docker run -d -p 3000:3000 -v absolute-project-address:/app -v volumeName:/app/data image-name
但是為了生產(chǎn),你必須創(chuàng)建一個(gè)圖像

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
您絕對(duì)應(yīng)該制作一個(gè)新圖像,而不是通過已安裝的卷共享代碼。那么整個(gè) docker 的思想就是產(chǎn)生一個(gè)自包含的“服務(wù)”,它可以跨服務(wù)器移植(即復(fù)制圖像)。Yuo docker 文件和鏡像構(gòu)建過程將跟蹤您的代碼版本,即在您的 docker 文件中,您可以拉取特定分支,或者您可以使用特定標(biāo)簽標(biāo)記鏡像。在安裝卷的情況下,您永遠(yuǎn)無法確定您的代碼實(shí)際上是什么版本。跑。
希望僅憑這個(gè)原因就可以幫助您做出決定。

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
一般來說,最好的做法是在您擁有新的源代碼并從該圖像運(yùn)行新容器時(shí)創(chuàng)建一個(gè)新圖像。Docker 可以快速創(chuàng)建和運(yùn)行新鏡像,所以你應(yīng)該利用它。此外,您可以通過標(biāo)記圖像來了解您正在運(yùn)行的代碼版本。
您提到您需要在 Docker 案例中編譯 Java 代碼,但在任何一種情況下都需要。您可以將您的代碼編譯成一個(gè) Jar,然后將 Jar 添加(或復(fù)制)到您的容器中并在那里運(yùn)行它。
使用外部代碼方法會(huì)想到一些快速的缺點(diǎn):您需要一些外部方法來管理正在運(yùn)行的代碼版本,docker tags 會(huì)為您處理。您還需要一些方法來提醒 Docker 容器一個(gè)新的可執(zhí)行文件已準(zhǔn)備好,然后讓 Docker 運(yùn)行它。此外,您需要確保您的 Docker 容器運(yùn)行的 Java(或 Python)版本與您的系統(tǒng)運(yùn)行的版本相同,這在 Docker 中也得到了處理,因?yàn)槟梢詮?Java 基礎(chǔ)映像構(gòu)建。

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
您應(yīng)該創(chuàng)建一個(gè)新映像,如果您認(rèn)為創(chuàng)建一個(gè)新映像和部署是您的任務(wù),那么您可以設(shè)置一個(gè) CI/CD 管道,它將自動(dòng)編譯 java 代碼、創(chuàng)建一個(gè)映像并在您隨時(shí)為您部署它將代碼推送到 GIT。
添加回答
舉報(bào)