最簡(jiǎn)單的Go Dockerfile編寫(xiě)姿勢(shì)允耿,沒(méi)有之一!

1. Dockerfile一些額外注意點(diǎn)

  • 選擇最簡(jiǎn)單的鏡像

    比如alpine俺泣,整個(gè)鏡像5M左右

  • 設(shè)置鏡像時(shí)區(qū)

    RUN apk add --no-cache tzdata
    ENV TZ Asia/Shanghai
    

2. 多階段構(gòu)建

  • 第一階段構(gòu)建否則構(gòu)建出可執(zhí)行文件疗认,確保構(gòu)建過(guò)程獨(dú)立于宿主機(jī)
  • 第二階段將第一階段的輸出作為輸入,構(gòu)建出最終的極簡(jiǎn)鏡像

3. 完整Dockerfile編寫(xiě)過(guò)程

  • 首先安裝 goctl 工具

    GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/tal-tech/go-zero/tools/goctl

  • greet 項(xiàng)目下創(chuàng)建一個(gè) hello 服務(wù)

    goctl api new hello

    文件結(jié)構(gòu)如下:

    greet
    ├── go.mod
    ├── go.sum
    └── service
        └── hello
            ├── Dockerfile
            ├── etc
            │   └── hello-api.yaml
            ├── hello.api
            ├── hello.go
            └── internal
                ├── config
                │   └── config.go
                ├── handler
                │   ├── hellohandler.go
                │   └── routes.go
                ├── logic
                │   └── hellologic.go
                ├── svc
                │   └── servicecontext.go
                └── types
                    └── types.go
    
  • hello 目錄下一鍵生成 Dockerfile

    goctl docker -go greet.go

    Dockerfile 內(nèi)容如下:

    FROM golang:alpine AS builder
    
    LABEL stage=gobuilder
    
    ENV CGO_ENABLED 0
    ENV GOOS linux
    ENV GOPROXY https://goproxy.cn,direct
    
    WORKDIR /build/zero
    
    ADD go.mod .
    ADD go.sum .
    RUN go mod download
    COPY . .
    COPY service/hello/etc /app/etc
    RUN go build -ldflags="-s -w" -o /app/hello service/hello/hello.go
    
    
    FROM alpine
    
    RUN apk update --no-cache && apk add --no-cache ca-certificates tzdata
    ENV TZ Asia/Shanghai
    
    WORKDIR /app
    COPY --from=builder /app/hello /app/hello
    COPY --from=builder /app/etc /app/etc
    
    CMD ["./hello", "-f", "etc/hello-api.yaml"]
    
  • greet 目錄下 build 鏡像

    docker build -t hello:v1 -f service/hello/Dockerfile .

  • 查看鏡像

    hello v1 5455f2eaea6b 7 minutes ago 18.1MB

    可以看出鏡像大小約為18M伏钠。

  • 啟動(dòng)服務(wù)

    docker run --rm -it -p 8888:8888 hello:v1

  • 測(cè)試服務(wù)

    $ curl -i http://localhost:8888/from/you
    HTTP/1.1 200 OK
    Content-Type: application/json
    Date: Thu, 10 Dec 2020 06:03:02 GMT
    Content-Length: 14
    
    {"message":""}
    

4. 總結(jié)

goctl 工具極大簡(jiǎn)化了 Dockerfile 文件的編寫(xiě)横漏,提供了開(kāi)箱即用的最佳實(shí)踐,并且支持了模板自定義熟掂。

如果覺(jué)得工具有幫助缎浇,歡迎 star ??

5. 項(xiàng)目地址

https://github.com/tal-tech/go-zero

項(xiàng)目地址:
https://github.com/tal-tech/go-zero

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市打掘,隨后出現(xiàn)的幾起案子华畏,更是在濱河造成了極大的恐慌,老刑警劉巖尊蚁,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亡笑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡横朋,警方通過(guò)查閱死者的電腦和手機(jī)仑乌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晰甚,你說(shuō)我怎么就攤上這事衙传。” “怎么了厕九?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蓖捶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我扁远,道長(zhǎng)俊鱼,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任畅买,我火速辦了婚禮并闲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谷羞。我一直安慰自己帝火,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布湃缎。 她就那樣靜靜地躺著犀填,像睡著了一般。 火紅的嫁衣襯著肌膚如雪雁歌。 梳的紋絲不亂的頭發(fā)上宏浩,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音靠瞎,去河邊找鬼。 笑死求妹,一個(gè)胖子當(dāng)著我的面吹牛乏盐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播制恍,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼父能,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了净神?” 一聲冷哼從身側(cè)響起何吝,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹃唯,沒(méi)想到半個(gè)月后爱榕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坡慌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年黔酥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跪者,死狀恐怖棵帽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渣玲,我是刑警寧澤逗概,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站忘衍,受9級(jí)特大地震影響逾苫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淑履,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一隶垮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秘噪,春花似錦狸吞、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至至壤,卻和暖如春威始,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背像街。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工黎棠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人镰绎。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓脓斩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親畴栖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子随静,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容