go 程序快速打包到容器

62 阅读1分钟

结合make指令+dockefile 快速打包容器模板

makefile

SHELL = /bin/bash  
  
NAME=violet-finance-rpc  
BRANCH=$(shell git rev-parse --abbrev-ref HEAD)  
VERSION=git-$(subst /,-,$(BRANCH))-$(shell git describe --tag --dirty)  
IMAGE_TAG=$(VERSION)  
IAMGE_REPO=docker.fastdocker.com:5000  
PKG=violet/app/finance/rpc  
  
gen_proto:  
        goctl rpc protoc --proto_path=./ --proto_path=../../../ --go-grpc_out=./ --go_out=./ --zrpc_out=./ -m finance.proto --style go_zero  
  
gen_doc:  
        protoc  --proto_path=./ --proto_path=../../../ --doc_out=../../../doc --doc_opt=../../../common/doc_template.tmpl,finance-rpc.md finance.proto  
  
  
linux:  
        GOOS=linux GOARCH=amd64 CGO_ENABLED=0 \  
                go build -v -tags netgo -installsuffix netgo -installsuffix cgo -ldflags '-w -s' -ldflags "-X main.Version=$(VERSION)" \  
                -o ./build/linux/violet-finance-rpc   
  
push: linux  
        docker build -t ${IAMGE_REPO}/violet-finance-rpc:${IMAGE_TAG} .  
        docker push ${IAMGE_REPO}/violet-finance-rpc:${IMAGE_TAG}  
        docker rmi ${IAMGE_REPO}/violet-finance-rpc:${IMAGE_TAG}  
        docker image prune -f

dockerfile

FROM  docker.fastdocker.com:5000/violet-base:3.20.3  
  
COPY ./build/linux/violet-finance-rpc /app/violet-finance-rpc  
  
COPY ./etc/finance.yaml /app/etc/finance.yaml  
  
WORKDIR /app  
  
# Run the app by default when the container starts  
CMD /app/violet-finance-rpc -f /app/etc/finance.yaml

特别注意go编译指令,和docke基础镜像