Skip to content

Commit

Permalink
add:实用go项目dockerfile示例
Browse files Browse the repository at this point in the history
  • Loading branch information
gjmzj committed Nov 7, 2019
1 parent 4cf4d37 commit 6812b99
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
44 changes: 44 additions & 0 deletions docs/practice/go_web_app/Dockerfile-more
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# build stage
FROM golang:1.13 as builder

# ENV GOPROXY=https://goproxy.cn
# 设置 GOPROXY 是为编译时能够通过代理下载Qiang外的包
# 设置 GOPRIVATE 是为编译时下载本地gitlab上的包时候不使用代理
ENV GOPROXY=https://goproxy.io
ENV GOPRIVATE=gitlab.yourdomain.com/*

WORKDIR /root

COPY ./ .

# 本地 gitlab 上的项目非公开,编译时需要用 ssh key 的方式下载本地 gitlab 包
# 提前把 ssh key 中的公钥上传到gitlab 个人profile中的 SSH KEY 中
# 在 docker build 时通过命令行参数用--build-arg 'SSH_PKEY=${KEY_TXT}' 传入
# 在 CICD 流水线中,${KEY_TXT} 可以是jenkins中的secret-text参数,也可以是gitlab-ci中的secret variables
ARG SSH_PKEY

# 设置 git config 是为了拉区项目时使用ssh方式 [email protected]:xxx/yyy.git
#

RUN git config --global url."[email protected]:".insteadof "https://gitlab.yourdomain.com/" && \
mkdir -p /root/.ssh && \
echo "-----BEGIN RSA PRIVATE KEY-----" > /root/.ssh/id_rsa && \
echo "${SSH_PKEY}" >> /root/.ssh/id_rsa && \
echo "-----END RSA PRIVATE KEY-----" >> /root/.ssh/id_rsa && \
sed -i "2s/ /\\n/g" /root/.ssh/id_rsa && \
echo "StrictHostKeyChecking no" > /root/.ssh/config && \
chmod 600 /root/.ssh/id_rsa

RUN go mod tidy && \
go mod download

RUN CGO_ENABLED=0 GOOS=linux go build -installsuffix cgo -o main cmd/main.go

# final stage
FROM alpine:3.10

WORKDIR /home/admin/bin

COPY --from=builder /root/main .

CMD ["./main"]
4 changes: 3 additions & 1 deletion docs/practice/go_web_app/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ Golang 作为服务器端新兴热门语言同时也是容器技术的主要编

## Dockerfile

[Dockerfile 文件](Dockerfile)
作为演示项目的Dockerfile比较简单,请看 [Dockerfile 文件](Dockerfile)

- 采用 docker 多阶段编译,使生成的目标镜像最小
- 使用 alpine 基础镜像
- 安装 tzdata 做时间本地化
- 安装信任根证书

一个真实复杂go项目的Dockerfile可能如这个例子:[复杂 Dockerfile](Dockerfile-more)

## 制作镜像

在 Dockerfile 文件所在目录,执行
Expand Down

0 comments on commit 6812b99

Please sign in to comment.