docker(9):使用alpinelinux 構建 golang http 啟動了,才15mb

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

本文的原文串連是: http://blog.csdn.net/freewebsys/article/details/53635529 未經博主允許不得轉載。
博主地址是:http://blog.csdn.net/freewebsys

1,關於alpine 環境

http://blog.csdn.net/freewebsys/article/details/53615757
昨天研究了下golang的http伺服器。
發現在啟動的時候報錯:

No such file or directory

發現這個錯誤,開始還以為是alpine 的系統lib庫少了,
必須使用docker 官方的golang鏡像呢。
後來研究明白了,其實是因為我的宿主是centos。
我在centos 上編譯了 golang,然後拷貝到alpine 環境上造成的。
解決辦法。
1,使用golang:alpine 鏡像 241 mb 進行編譯,映射一個檔案夾。
2,然後把編譯好的檔案拷貝出來,放到alpine的鏡像上即可。

這樣一個15.24 MB golang 環境就好了。
因為還安裝了一個 bash ,可以進入系統查看。

2,操作流程

首先構建一個golang build 的環境。

FROM       docker.io/golang:alpineRUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main" > /etc/apk/repositoriesRUN apk add --update curl bash && \    rm -rf /var/cache/apk/*

編譯鏡像:

docker build -t demo/go-build:1.0 .

啟動鏡像,並把/data/go 目錄映射到 /data/go目錄,其中–rm 表示退出之後刪除鏡像。

docker run -it -v /data/go:/data/go --rm demo/go-build:1.0 /bin/bash#cd /data/go#go build http.go

其中http.go 檔案:

package mainimport (        "fmt"        "net/http")func handler(w http.ResponseWriter, r *http.Request) {        fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])}func main() {        http.HandleFunc("/", handler)        http.ListenAndServe("0.0.0.0:8080", nil)}

摘自golang 官方的httpdemo。

3,將alpine 和go http打包

在alpine環境下編譯的http 包再做一個鏡像,拷貝到alpine系統下:

FROM       docker.io/alpine:latestMAINTAINER demo <juest a demo>RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main" > /etc/apk/repositoriesRUN apk add --update curl bash && \    rm -rf /var/cache/apk/*RUN mkdir -p /data/goCOPY http /data/goEXPOSE 8080ENTRYPOINT ["/data/go/http"]

打包,並把http 啟動。

docker build -t demo/go-http:1.0 .docker run -d -p 8080:8080 --name go-http demo/go-http:1.0

直接存取 curl localhost:8080 即可了。

4,總結

本文的原文串連是: http://blog.csdn.net/freewebsys/article/details/53635529 未經博主允許不得轉載。
博主地址是:http://blog.csdn.net/freewebsys

這個是個非常好的實現,怪不得golang 號稱是雲端運算設計的語言呢。直接在alpine 5mb的系統上運行了,在安裝一個bash,一共才15 mb,咋做版本升級,版本備份都行。
厲害了我的哥,golang 實在是太喜歡了。
準備把背景系統都設計設計用 golang 重寫吧。
其實java能做的golang 都能做呢。
java 打上一個jre 都 100 mb以上了。看看人家golang 才 幾mb。
啥東西都齊了。golang真的是雲端運算的語言了呢。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.