docker部署go應用

前言

咱們微服務不少都是用golang來實現,打算用docker來部署咱們的微服務。
並且go的應用就是一個可執行的二進制文件,因此使用docker部署go應用很是簡單。
這個教程直接以編譯好的可執行的二進制文件爲例。linux

編譯註意事項

若是當前系統和拉取的鏡像的系統不一樣,須要交叉編譯。好比我當前是在Mac下執行go build編譯的,而我拉取的golang鏡像是基於Linux的,啓動容器時會發現go的二進制文件沒法執行,因此要進行交叉編譯:GOOS=linux GOARCH=amd64 go build,這裏GOOS=linux表示編譯到linux,GOARCH=amd64表示64位,若是鏡像系統是32位,則GOARCH=386,更多信息請自行Google。golang

構建應用鏡像

因爲官方的golang鏡像太大了,720多M,因此爲了最小化咱們的應用,咱們採起了alpine鏡像,大小連4MB都不到。docker

1.編寫Dockerfile


DockerFile以下:app

FROM alpine
MAINTAINER  Aze
WORKDIR /go/src/
COPY . .
EXPOSE 8777
ENTRYPOINT ["./app/main"]

2.構建鏡像

docker build -t golang-docker:v1 .
docker部署go應用運維

運行程序

docker run --name edge-service -d -p 8777:8777 -v /var/www/app/app:/go/src/app golang-docker:v1ide

總結

1.docker使用必需要熟悉各類參數表明的含義,有時候可讓你事半功倍。
2.docker部署golang項目方便之後部署和運維管理,須要掛載目錄。
3.配置項能夠經過掛載數據卷或者傳env環境變量來處理,具體選擇仍是看實際的場景和需求。微服務

參考

1.http://bazingafeng.com/2017/09/14/deploying-a-go-application-in-docker/
2.https://blog.csdn.net/weixin_34007886/article/details/90491175ui

相關文章
相關標籤/搜索