发布流程

上传至 Docker 仓库

推荐使用make还行处理:

  1. APPNAME = kplcloud
  2. BIN = $(GOPATH)/bin
  3. GOCMD = /usr/local/go/bin/go
  4. GOBUILD = $(GOCMD) build
  5. GOINSTALL = $(GOCMD) install
  6. GOCLEAN = $(GOCMD) clean
  7. GOTEST = $(GOCMD) test
  8. GOGET = $(GOCMD) get
  9. GORUN = $(GOCMD) run
  10. BINARY_UNIX = $(BIN)_unix
  11. PID = .pid
  12. HUB_ADDR = hub.kpaas.nsini.com
  13. DOCKER_USER =
  14. DOCKER_PWD =
  15. TAG = v0.0.11-test
  16. NAMESPACE = kpaas
  17. PWD = $(shell pwd)
  18. start:
  19. $(GOBUILD) -v
  20. $(BIN)/$(APPNAME) & echo $$! > $(PID)
  21. restart:
  22. @echo restart the app...
  23. @kill `cat $(PID)` || true
  24. $(BIN)/$(APPNAME) & echo $$! > $(PID)
  25. stop:
  26. @kill `cat $(PID)` || true
  27. build-linux:
  28. CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(BINARY_UNIX) -v
  29. login:
  30. docker login -u $(DOCKER_USER) -p $(DOCKER_PWD) $(HUB_ADDR)
  31. build:
  32. # CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOBUILD) -o kplcloud -v ./cmd/server/main.go
  33. docker build --rm -t $(APPNAME):$(TAG) .
  34. docker-run:
  35. docker run -it --rm -p 8080:8080 -v $(PWD)/app.cfg:/etc/kplcloud/app.cfg -v $(PWD)/config_189.yaml:/etc/kplcloud/config.yaml $(APPNAME):$(TAG)
  36. push:
  37. docker image tag $(APPNAME):$(TAG) $(HUB_ADDR)/$(NAMESPACE)/$(APPNAME):$(TAG)
  38. docker push $(HUB_ADDR)/$(NAMESPACE)/$(APPNAME):$(TAG)
  39. run:
  40. GO111MODULE=on $(GORUN) ./cmd/server/main.go start -p :8080 -c ./app.cfg -k config_189.yaml

Dockerfile:

  1. FROM golang:latest as build-env
  2. ENV GO111MODULE=on
  3. ENV BUILDPATH=github.com/kplcloud/kplcloud
  4. ENV GOPROXY=https://goproxy.io
  5. ENV GOPATH=/go
  6. RUN mkdir -p /go/src/${BUILDPATH}
  7. COPY ./ /go/src/${BUILDPATH}
  8. RUN cd /go/src/${BUILDPATH}/cmd/server && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go install -v
  9. FROM alpine:latest
  10. RUN apk update \
  11. && apk upgrade \
  12. && apk add --no-cache \
  13. ca-certificates \
  14. && update-ca-certificates 2>/dev/null || true
  15. COPY --from=build-env /go/bin/server /go/bin/server
  16. COPY ./static /go/bin/static
  17. WORKDIR /go/bin/
  18. CMD ["/go/bin/server", "start", "-p", ":8080", "-c", "/etc/kplcloud/app.cfg", "-k", "/etc/kplcloud/config.yaml"]
  1. 编译

    1. $ make login
    2. $ make build
  2. 上传至docker仓库

    1. $ make push