iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

在使用docker的時候,第一個會遇到的問題就是應該怎麼撰寫Dockerfile,這個Dockerfile的運作邏輯跟使用方式又是什麼,所以想在這邊淺談一下Dockerfile的整體內容

以下是一個後端專案的Dockerfile,接著就讓我們逐行的來解釋這個檔案到底做了什麼事情

FROM golang:1.23-bookworm AS builder

WORKDIR /app

COPY go.mod ./go.mod
COPY go.sum ./go.sum
RUN go mod download

COPY . .

RUN GOOS=linux go build -o /app/backend

FROM ubuntu:22.04

WORKDIR /app

COPY --from=builder /app/backend /backend

EXPOSE 5000

CMD ["/backend"]

FROM

FROM golang:1.23-bookworm AS builder
FROM ubuntu:22.04

首先,可以看到上面有兩個FROM,這個關鍵字是用來描述說,你的這個Image想要從什麼Image當作基礎下去做延伸,就上述例子,我們可以看到這個專案會有兩個Image,一個預先裝好了golang 1.23的Linux作業系統,另一個則是標準的Ubuntu的作業系統,而這兩個Image是基於什麼Image Build出來的,可以到Docker Hub裡面去尋找

而為什麼會有兩個Image,我在接下來會說明

WORKDIR

這個主要在描述的是你的工作目錄,也就是你如果在這個image中打上pwd這個指令後,他會顯示的路徑,在服務如果有存取相對路徑的檔案的時候會有影響

COPY

這個指令很明顯,就是來複製檔案的

RUN

直接運行script的,就跟你平常打開terminal一樣的效果

EXPOSE

這個僅是備註,沒有實際用途,用來提示使用者這個Dockerfile裡面有使用到port 5000,在實際部署的時候要記得Port Forward


上一篇
Day09-docker是什麼呢?
下一篇
Day11-淺談Dockerfile-2-cache
系列文
開發環境設定指南及工具分享11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言