不需要源码,使用静态编译二进制即可。

在打包服务器(例如Jenkins)上,git clone or go get从本地仓库获得源码,然后静态编译成二进制或镜像,然后推送到仓库(或服务器上)即可,更新剩下操作就是重启服务等操作了。

go静态编译百度即可,我自己使用的部署镜像就16M大小,例如dockerfile

# 编译website
FROM golang:1.13.0-alpine3.10 AS builder

RUN apk add git && \
    go version && go env && \
    GO111MODULE=off go get -v github.com/eudore/website && \
    mkdir website && cp -r /go/src/github.com/eudore/website/static website/static && \
    GO111MODULE=off CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags "-s -w" -o website/server github.com/eudore/website

# 创建运行镜像
FROM alpine:latest

COPY --from=builder /go/website /go/src/github.com/eudore/website/config/config.json /

CMD ["/server", "--enable.+=docker"]