Windows:在docker中运行golang程序————育儿式教程
1.运行环境
2.准备工作
1.编写一个go程序main.go,。
package main import ( "net/http" "github.com/gin-gonic/gin" ) func Say(gct *gin.Context){ gct.JSON(http.StatusOK,gin.H{ "Title":"忍住~", }) } func main() { //开启默认路由 r:=gin.Default() r.GET("/a",Say) r.Run(":8080") }
2.测试环境是否可用
#在cmd中使用以下命令 1.docker -v #查看docker版本,检测docker是否安装成功 2.go version #查看go版本,检测go是否安装成功
3.主要操作
1.查看本地环境
#在cmd终端或者使用goland中终端,跳转到项目路径src下 1.go env #查看go所在环境,需要注意一下几个环境
由于本地是windows,go build 语句会因为系统环境不同生成不同的启动文件。(在windows中是.exe文件,在linux是二进制可执行文件)而我们需要的是能在docker中运行的二进制文件,所以需要暂时更改环境配置。
1.go env -w GOOS=linux #环境所在操作系统 2.go env -w CGO_ENABLED=0 #是否开启交叉编译
2.生成所需要的main的二进制文件
#在终端/goland终端的src目录下执行一下命令 go build app/main.go
在src目录下生成一个可见main文件
3.编写DockerFile文件
在src目录下创建一个DockerFile文件,其内容如下。
FROM golang:1.12 WORKDIR /goawesomeProject/src ADD dockergin /dockergin #这一步至关重要将二进制文件添加到镜像中 COPY . . EXPOSE 8080 ENTRYPOINT [ "/dockergin" ] #这一步在启用镜像是运行该命令
注意 dockergin指的是你在生成镜像的镜像名字!!!
4.生成dockergin镜像文件
#在终端/goland终端中到项目的src目录下运行以下命令 1.docker build . -t dockergin:latest #查看是否生成对应镜像 2.docker images #使用命令启动镜像 3.docker run -p 127.0.0.1:8080:8080 dockergin #这里需要注意一定要绑定映射端口,否则无法访问。 4.docker ps #可以查看是否启用成功
5.查看服务
在浏览器访问 127.0.0.1:8080/a 端口,查看是否成功实现!