Go语言因其高效,适合开发网络应用。本文介绍Windows11环境下,Go开发环境搭建及Hello World!并打包成Docker的网络应用。Docker镜像文件最小,在20MB之内。
一、基础环境
1、必备的科学上网环境
因为很多模块需要访问外网, 所以科学上网环境是必须的,代理也是必须的。这些环境搭建就不细说了。
2、Go安装
https://go.dev/dl 安装最新的Windows版本。
在Powershell 下,go version 验证是否正常,输出应该类似:
go version go1.22.3 windows/amd64
如不正常,则配置一下环境变量。
GOROOT = C:\Go
GOPATH = C:\Users\<你的用户名>\go
PATH = %PATH%;%GOROOT%\bin;%GOPATH%\bin
3、安装Git 和 Docker
https://git-scm.com/download/win 安装时建议Use Git from command line
Docker Desktop ,安装时建议勾选WSL2。Docker安装完需要配置Docker Desktop 随Windows启动,配置代理环境。验证: docker info ,看到OSType: linux
4、vsCode
需要安装插件Go、Git和Docker
5、 所有的都必须配置科学上网
VSCode : Preferences -> setting->http proxy
Docker Desktop: setting->Resources->Proxies
Go: go env -w GOPROXY=https://goproxy.cn,direct
二、Go 项目初始化
建立一个Go的项目文件夹
在项目文件夹下执行,go mod init <项目名> , 会创建一个go.mod的初始化文件
三、写一个简单的提供http的Web服务
main.go ,内容如下:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World Service")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
四、Dockerfile
在项目文件夹下,创建dockerfile 文件, 内容如下:
# build
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o <项目名>
# run(极小)
FROM scratch
COPY --from=builder /app/<项目名> /<项目名>
EXPOSE 8080
ENTRYPOINT ["/<项目名>"]
五、编译打包
docker build -t <项目名> .
六、 验证
1、docker images
可以看到镜像
2、docker run
docker run -d -p 8080:8080 <镜像名>
3、 网络访问
打开浏览器访问, http://localhost:8080