iT邦幫忙

2

Docker打包程式的方式

  • 分享至 

  • xImage

在Dockerfile中:
方式1, 把程式的原始碼複製到容器中再做編譯。
方式2, 把在本機編譯好的結果複製到容器中。

請問你們通常使用以上的哪一種方式? 理由是什麼? 它們各別有沒有什麼優缺點? 謝謝

沒用 Docker 的人跳過@@"
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

5
補覺鳴詩
iT邦高手 1 級 ‧ 2024-04-28 18:28:23

方式 1: 正確
方式 2: 錯誤

這要來講講 build code 到底在做什麼
build code > 產生在目標環境能執行的 code
產生的過程會跟 hardware architecture 還有 OS 產生一定的 dependencies
比如說 ARM/x86
OS 使用的 libssl version

你在 host 進行好 build 的動作再 copy 進 docker image > 實際上 hardware architecture 跟 OS 可能就不同了

以此為例 https://hub.docker.com/_/python
python 就分 windows/linux
linux 又細分 alpine/bullseye(debian)

採用方式 2 必須確保環境跟 image 內一致 才能確保 build 完的結果能正確
在開發團隊中要確保所有人環境一致是有困難的
方式 2 會產生極大的混亂

方式 1 也帶來一些好處
比如 docker 有 cache 能加速 build 流程
不論在何處執行 docker build 都不太須顧慮 host 是什麼 (當然還是得看 dockerfile 怎麼寫法)
不需要 build N 種 code 就必須準備 N 種環境

我要發表回答

立即登入回答