咱們微服務不少都是用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
DockerFile以下:app
FROM alpine MAINTAINER Aze WORKDIR /go/src/ COPY . . EXPOSE 8777 ENTRYPOINT ["./app/main"]
docker build -t golang-docker:v1 .
運維
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