「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」

news/2024/11/17 20:31:54/

介绍

使用Docker开发Golang云原生应用程序,使用Golang服务和Redis服务

 注:写得很详细 为方便我的朋友可以看懂 

环境部署

确保已经安装Godocker等基础配置
官网下载链接直达:Docker官网下载         Go官网下载

操作步骤

第一步 创建一个Go应用程序

  1. 创建新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服务

  1. 创建 Dockerfile文件(无文件后缀名)如图:
    在这里插入图片描述

  2. 然后编辑该文件:

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!

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/1234365.html

相关文章

初识JVM(简单易懂),解开JVM神秘的面纱

目录 一、什么是JVM(Java虚拟机)? 二、JVM的功能 三、JVM的功能-即时编译 四、常见的JVM 五、JVM的组成 五、JVM的工作流程 参考资料 一、什么是JVM(Java虚拟机)? 在Java的世界里,Java虚…

【译】什么时候使用 Spring 6 JdbcClient

原文地址:Spring 6 JdbcClient: When and How to Use it? 一、前言 自 Spring 6.1 起,JdbcClient 为 JDBC 查询和更新操作提供了统一的客户端 API,从而提供了更流畅、更简化的交互模型。本教程演示了如何在各种场景中使用 JdbcClient。 二…

Spark---集群搭建

Standalone集群搭建与Spark on Yarn配置 1、Standalone Standalone集群是Spark自带的资源调度框架,支持分布式搭建,这里建议搭建Standalone节点数为3台,1台master节点,2台worker节点,这虚拟机中每台节点的内存至少给…

Nginx 开源版安装

下载 tar.gz安装包,上传。 解压 [rootlocalhost ~]# tar zxvf nginx-1.21.6.tar.gz nginx-1.21.6/ nginx-1.21.6/auto/ nginx-1.21.6/conf/ nginx-1.21.6/contrib/ nginx-1.21.6/src/ ... ...安装gcc [rootlocalhost nginx-1.21.6]# yum install -y gcc 已加载插件…

Unity中Shader的PBR的基础知识与理论

文章目录 前言一、什么是PBR二、什么是PBS在这里插入图片描述 三、PBS的核心理论1、物质的光学特性(Substance Optical Properties)2、微平面理论(Microfacet Theory)3、能量守恒(Energy Conservation)4、菲…

达索系统SOLIDWORKS流体分析网格划分失败,大多是这2种原因

SOLIDWORKS Flow Simulation 是直观的流体力学 (CFD) 分析软件,该软件功能强大、操作人性化,快速轻松的分析产品内部或外部流体的流动情况,以用来改善产品性能和功能。 当流体分析运行网格划分时,提示失败。 这是由于凸起面与圆…

uniapp 富文本以及移动端富文本的展示问题

富文本展示有几种方式: 1.<view v-html"content"></view> 2. uniapp自带组件 rich-text rich-text | uni-app官网 <rich-text :nodes"content"></rich-text> 3.uView组件 u-parse Parse 富文本解析器 | uView 2.0 - 全面兼…

基于STM32的色彩识别与分类算法优化

基于STM32的色彩识别与分类算法优化是一项与图像处理和机器学习相关的研究任务&#xff0c;旨在实现高效的色彩识别和分类算法在STM32微控制器上的运行。本文将介绍基于STM32的色彩识别与分类算法优化的原理和实现步骤&#xff0c;并提供相应的代码示例。 1. 色彩识别与分类概…