亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何構建一個最小的“distroless”圖像來運行運行 java 子服務的 golang 服務?

如何構建一個最小的“distroless”圖像來運行運行 java 子服務的 golang 服務?

Go
喵喔喔 2023-02-06 10:37:24
現在我有一個用 golang 編寫的程序,我試圖在一個最小的容器中運行。這個go程序啟動的時候正好啟動了另外一個java寫的子程序,這個子程序也需要運行在容器中。我想知道如何構建我的 Dockerfile 以將其作為“distroless”圖像來實現?,F在我正在探索這樣的解決方案:FROM <golang-distro> as go-builderFROM <java-distro> as java-builderFROM <minimal-base-image># copy over all files needed to set up golang runtime to run go-parent-serviceCOPY --from=go-builder /<golang-binaries> /# copy over all files needed to set up java runtime so go-parent-service can run its java sub processCOPY --from-java-builder /<jvm-binaries> /# executable for the golang serviceCOPY /go-parent-service /# run the golang service, which will also start up the java service as sub processCMD ["/go-parent-service"]這種方法是否有意義,或者是否有更好的方法來構建此圖像?我知道啟動 java 服務的 go 服務使事情變得有點棘手,并且可能不是最佳實踐。然而,由于我不擁有這個可執行文件,我無法分離出這些服務并在不同的容器中運行它們。
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

由于涉及 java,因此您的最小基礎映像必須具有(至少)JRE 才能運行 java 類。


Go 程序不需要在目標映像上安裝/復制 golang,因為它可以在目標映像的 go-distro 上構建為可執行文件。


如果go 源和 java 源可用于編譯


FROM golang:<flavor> as go-builder 

# Build go program here, i.e. produce a binary


FROM jdk-image:<flavor> as java-builder

# Compile sources to java classes or jar here


FROM <jre image>:<flavor>

COPY --from go-builder <go executable> .

COPY --from java-builder <java jar and related deps> .


CMD/ENTRYPOINT ["<run go bainary>"]


風味:高山、纖細等。


ELSE二進制文件可用,即具有所需依賴項的 go binary 和 java jar;然后可以簡單地將它們復制到最終的 Java-JRE 映像并運行。前提是二進制文件是在考慮目標操作系統的情況下創建的。


查看完整回答
反對 回復 2023-02-06
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號