Jenkins打包golang程序后通过K8S部署
Jenkins打包golang程序后通过K8S部署,通过环境变量(ENV)方式传递参数
·
背影
- 项目框架为golang + gin
- 通过flag包接收命令行参数
- 通过Jenkins打包
- 通过K8S部署
解决方案
- 通过Jenkins运行go build命令打包,GOOS=linux GOARCH=amd64 CGO_ENABLED=0 /usr/local/go/bin/go build -o server …/main.go,由于docker基础镜像为golang:1.18.2-alpine,如果不加GOOS=linux GOARCH=amd64 CGO_ENABLED=0,运行时为报错
- 通过Dockerfile打包docker镜像,并使用ENV的方式传递命令行参数
Jenkins配置
在这里插入图片描述
Dockerfile
FROM golang:1.18.2-alpine
WORKDIR /
#将Dockerfile 中的文件存储到/app下
COPY target/ /
RUN mkdir -p /conf
COPY conf/ /conf
# 暴露的端口
EXPOSE 8080
#设置容器的启动命令,CMD是设置容器的启动指令
CMD [ "sh","-c","/shrimp-map-service --database.db=$DATABASE_DB --database.ip=$DATABASE_IP --database.maxIdle=$DATABASE_MAX_IDLE --database.maxOpen=$DATABASE_MAX_OPEN --database.password=$DATABASE_PASSWORD --database.port=$DATABASE_PORT --database.username=$DATABASE_USER_NAME --redis.addr=$REDIS_ADDR --redis.db=$REDIS_DB --redis.password=$REDIS_PASSWORD --redis.poolSize=$REDIS_POOL_SIZE --server.port=$SERVER_PORT"]
yaml
更多推荐
已为社区贡献6条内容
所有评论(0)