项目地址:https://github.com/EDDYCJY/go-gin-example
注:
- 开始前你需要安装好 docker,配好镜像源
- 本章节源码在 f-20180324-docker 分支上
- 从本章节开始 项目目录都以 go-gin-example 为基准(请配合自己本地项目灵活变动)
介绍
在这里简单介绍下Docker,建议深入学习
Docker 是一个开源的轻量级容器技术,让开发者可以打包他们的应用以及应用运行的上下文环境到一个可移植的镜像中,然后发布到任何支持Docker的系统上运行。 通过容器技术,在几乎没有性能开销的情况下,Docker 为应用提供了一个隔离运行环境
- 简化配置
- 代码流水线管理
- 提高开发效率
- 隔离应用
- 快速、持续部署
接下来我们正式开始对项目进行 docker 的所需处理和编写,每一个大标题为步骤大纲
Golang
一、编写Dockerfile
在 go-gin-example 项目根目录创建 Dockerfile 文件,写入内容
FROM golang:latestWORKDIR $GOPATH/src/github.com/EDDYCJY/go-gin-exampleCOPY . $GOPATH/src/github.com/EDDYCJY/go-gin-exampleRUN go build .EXPOSE 8000ENTRYPOINT ["./go-gin-example"]
作用
golang:latest 镜像为基础镜像,将工作目录设置为 $GOPATH/src/go-gin-example,并将当前上下文目录的内容复制到 $GOPATH/src/go-gin-example 中
在进行 go build 编译完毕后,将容器启动程序设置为 ./go-gin-example,也就是我们所编译的可执行文件
注意 go-gin-example 在 docker 容器里编译,并没有在宿主机现场编译
说明
Dockerfile 文件是用于定义 Docker 镜像生成流程的配置文件,文件内容是一条条指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建;这些指令应用于基础镜像并最终创建一个新的镜像
你可以认为用于快速创建自定义的 Docker 镜像
1、 FROM
指定基础镜像(必须有的指令,并且必须是第一条指令)
2、 WORKDIR
格式为 WORKDIR
使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如果目录不存在,WORKDIR 会帮你建立目录
3、COPY
格式:
COPY ... COPY ["