一. 编写Go web项目
package mainimport ( "net/http" "html/template")func welcome(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("view/index.html") t.Execute(w, nil)}func main() { s := http.Server{Addr: ":8090"} http.HandleFunc("/", welcome) s.ListenAndServe()}
二.制作Docker镜像
- 修改系统环境变量GOPATH为项目的路径
- 在项目路径下新建文件dockfile(没有扩展名)并添加下面信息
#源镜像FROM golang:latest#作者MAINTAINER smallming#设置工作目录WORKDIR $GOPATH/src/c#将服务器的go工程代码加入到docker容器中ADD . $GOPATH/src/c#go构建可执行文件RUN go build .#暴露端口EXPOSE 8091#最终运行docker的命令ENTRYPOINT ["./c"]
- 安装docker后,在任务栏图标右键—>switch to windos container 切换到容器
- 启动windows命令行,进入到项目所在目录,输入命令进行构建,第一次构建需要下载golang语言库,时间较长,如果出现下载失败,多次尝试即可.下载后以后就不需要下载了
- -t表示自定义个tag,给项目起名
- c 名称
- . 表示当前目录
docker build -t c .
- 查看docker中的images,发现有一个c的images和golang的images
D:\gowork\c>docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEc latest c7eaa8da1792 38 minutes ago 11.2 GBgolang latest 3d0b1554763a 5 days ago 11.2 GB
- 运行docker
- 80:80 表示把宿主80绑定给docker容器的80
- -d 表示后端运行
docker run -p 80:80 -d c
- 查看docker 容器的id,并根据id查看容器ip
D:\gowork\c>docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES31cd94e28249 c "./c" 9 minutes ago Up 9 minutes 0.0.0.0:80->80/tcp, 8091/tcp hungry_shirleyD:\gowork\c>docker inspect 31cd94e28249在信息中看"IPAddress"属性就是docker容器的ip