介绍
使用Docker开发Golang云原生应用程序,使用Golang服务和Redis服务
注:写得很详细 为方便我的朋友可以看懂
环境部署
确保已经安装Go
、docker
等基础配置
官网下载链接直达:Docker官网下载 Go官网下载
操作步骤
第一步 创建一个Go应用程序
- 创建新Go工程,编辑main.go文件内容如下:
package mainimport ("fmt""log""net/http""github.com/go-redis/redis/v8""context"
)var ctx = context.Background()func main() {// 设置Redis客户端client := redis.NewClient(&redis.Options{Addr: "redis:6379", // 使用Docker服务名作为地址})// 确认Redis连接_, err := client.Ping(ctx).Result()if err != nil {log.Fatalf("Could not connect to Redis: %v", err)}// 设置HTTP服务器http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {// 尝试从Redis获取值val, err := client.Get(ctx, "counter").Result()if err == redis.Nil {val = "0"_, err := client.Set(ctx, "counter", "1", 0).Result()if err != nil {fmt.Fprintf(w, "Error setting value in Redis: %v", err)return}} else if err != nil {fmt.Fprintf(w, "Error getting value from Redis: %v", err)return} else {// 增加计数器newVal, err := client.Incr(ctx, "counter").Result()if err != nil {fmt.Fprintf(w, "Error incrementing value in Redis: %v", err)return}val = fmt.Sprintf("%d", newVal)}fmt.Fprintf(w, "Counter value is: %s", val)})// 启动HTTP服务器log.Fatal(http.ListenAndServe(":8080", nil))
}
第二步 使用Docker编排Go应用程序和Redis服务
-
创建
Dockerfile
文件(无文件后缀名)如图:
-
然后编辑该文件:
FROM golang:1.16WORKDIR /appCOPY go.mod .
COPY go.sum .
RUN go mod downloadCOPY *.go .RUN go build -o /hello-redisEXPOSE 8080CMD [ "/hello-redis" ]
第三步 初始化Go模块
继续在Terminal编辑(确保还是在这个go程序的路径):
go mod init hello-redis
go mod tidy
第四步 创建并编辑docker-compose.yml文件
在文件夹下创建文件,添加内容如下:
version: '3'
services:app:build: .ports:- "8080:8080"depends_on:- redisredis:image: "redis:alpine"
第五步 构建和运行应用程序
继续在Terminal上输入代码:
docker-compose up --build
此时将会试图构建Go应用程序和Redis服务,并启动它们,在这个过程中需要等待Docker下载相应的依赖配置。
第六步 测试应用程序
使用curl
访问http://localhost:8082
输入代码:
curl http://localhost:8080
这个时候会打开浏览器并访问http://localhost:8080,页面上会显示计数值
附录
比较快一点的编辑文件的方法就是使用Terminal
具体的步骤如下:(一个小案例:创建Dockerfile文件并编辑)
1. 切换到工作目录
在工作目录上右击打开Terminal
或者直接打开Terminal 然后输入代码切换到工作目录
cd Go应用程序的路径
忘记路径的时候 如何查看Go应用程序的工作路径
右击
go文件夹,点击get info
以下信息就是go文件夹的位置
2. 创建文件
输入代码:
vim Dockerfile
3. 编辑文件,保存并退出
复制粘贴前文代码
复制粘贴好之后,直接输入代码,回车即可退出:
注意一定要是英文输入法
:wq!