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

这篇具有很好参考价值的文章主要介绍了「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

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

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

环境部署

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

操作步骤

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

  1. 创建新Go工程,编辑main.go文件内容如下:
package main

import (
	"context"
	"fmt"
	"github.com/go-redis/redis/v8"
	"log"
	"net/http"
)

var ctx = context.Background() //创建一个context---用于redis操作

func main() {
	// 第一步 设置Redis客户端
	client := redis.NewClient(&redis.Options{
		Addr: "localhost:6379", // 使用Docker服务名作为地址
	})
	//1 redis.NewClient()初始化一个新的redis客户端实例(客户端可以执行对redis各种操作)
	//在创建一个数据库连接时,其实是创建了一个数据库客户端实例
	//2 &redis.Options{}是一个结构体(包含创建redis客户端时配置信息)
	//3 Addr:“redis:6379” 设置redis服务端的地址(redis--服务器名/ip地址;6379--redis服务默认端口)

	// 第二步 确认 是否与 Redis 连接成功
	_, err := client.Ping(ctx).Result() //客户端 发送P ing 到服务端-->检测客户端是否与 Redis服务器 建立连接
	if err != nil {
		log.Fatalf("Could not connect to Redis: %v", err) //记录err并终止程序
	}
	//.Result() 获取Ping后的响应和错误

	// 第三步 1 设置HTTP服务器
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		//尝试从Redis获取值
		val, err := client.Get(ctx, "counter").Result() //查键counter(val:获取到的值value)

		//(1)无查到key(redis.Nil--特殊错误:键不存在)
		if err == redis.Nil {

			//增键counter
			val = "0"                                             //无计数器的值--设置为0
			_, err := client.Set(ctx, "counter", "1", 0).Result() //增键counter   (最后参数0:表示键不会过期)
			if err != nil {
				fmt.Fprintf(w, "Error setting value in Redis: %v", err) //错误信息写入http响应
				//w:HTTP响应写入器(向客户端发送响应数据) %v 格式化占位符:表示err
				return //终止函数,不再向下执行
			}
			//(2)发生错误
		} else if err != nil {
			fmt.Fprintf(w, "Error getting value from Redis: %v", err)
			return

		} else {
			// (3)查到key,value++
			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(":8082", nil))
}



注:查询Redis服务端的地址和端口(在Terminal输入以下代码),如图:

redis-cli

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



第二步 使用Docker编排Go应用程序和Redis服务

  1. 创建 Dockerfile文件(无文件后缀名)如图:
    「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」,技术,docker,golang,云原生

  2. 然后编辑该文件:

FROM golang:1.16

WORKDIR /app

COPY go.mod .
COPY go.sum .
RUN go mod download

COPY *.go .

RUN go build -o /hello-redis

EXPOSE 8080

CMD [ "/hello-redis" ]

第三步 初始化Go模块

继续在Terminal编辑(确保还是在这个go程序的路径):

go mod init hello-redis
go mod tidy

第四步 创建并编辑docker-compose.yml文件

在文件夹下创建文件,添加内容如下:

version: '3' #docker compose的版本号

#定义要运行的服务
services:
  #自定义应用服务
  app:        #定义名为app的服务
    build: .  #构建Dockerfile (使用 . 当前目录下的Dockerfile文件)
    ports:
      - "8082:8082" # 映射端口: 容器8082端口---映射-->宿主机8082端口
    depends_on:
      - redis       # 依赖redis服务
  redis:
    image: "redis:alpine"#使用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

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



或者直接打开Terminal 然后输入代码切换到工作目录

cd Go应用程序的路径

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

忘记路径的时候 如何查看Go应用程序的工作路径

右击go文件夹,点击get info
「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」,技术,docker,golang,云原生
以下信息就是go文件夹的位置
「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」,技术,docker,golang,云原生

2. 创建文件

输入代码:

vim Dockerfile

3. 编辑文件,保存并退出

复制粘贴前文代码
「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」,技术,docker,golang,云原生
复制粘贴好之后,直接输入代码,回车即可退出:
注意一定要是英文输入法

:wq!

「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」,技术,docker,golang,云原生文章来源地址https://www.toymoban.com/news/detail-758306.html

到了这里,关于「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MAC苹果电脑如何压缩rar文件?

    作为开发者,想必主力开发机肯定都以苹果的MacBook为主,究其原因,为非是因为其对开发者的友好性,且可同时进行iOS 以及android的app开发,但是windows在这方面就欠缺太多了,虽然很多人说可以使用,但是能用归能用和好用还是不能搭边的,有些东西确实比苹果的麻烦很多。

    2024年02月10日
    浏览(56)
  • 【云原生 · Docker】轻松学会dockerfile构建镜像

    目录 🍉dockerfile是什么 🍉镜像的缓存特性 🍉dockerfile命令 🍒FROM 🍒RUN 🍒CMD 🍒LABEL 🍒EXPOSE 🍒ENV 🍒ADD 🍒COPY 🍒ENTRYPOINT 🍒VOLUME 🍒USER 🍒WORKDIR 🍒ARG 🍒ONBUILD 🍒STOPSIGNAL     🦐博客主页:大虾好吃吗的博客     🦐专栏地址:云原生专栏 docker中并不建议用户通过com

    2024年02月08日
    浏览(58)
  • Docker与Go:构建高性能的Go应用

    Docker是一种开源的应用容器引擎,它使用一种名为容器的虚拟化方法来隔离软件应用的运行环境。Docker使得开发人员可以在任何地方运行他们的应用,无论是在本地开发环境还是生产环境。Go是一种静态类型、编译式、高性能的编程语言,它的设计目标是简单且高效。 在本文

    2024年02月19日
    浏览(52)
  • 【Go Web 篇】从零开始:构建最简单的 Go 语言 Web 服务器

    随着互联网的迅速发展,Web 服务器成为了连接世界的关键组件之一。而在现代编程语言中,Go 语言因其卓越的性能和并发能力而备受青睐。本篇博客将带你从零开始,一步步构建最简单的 Go 语言 Web 服务器,让你对 Go 语言的 Web 开发能力有一个初步的了解。 在选择一门语言

    2024年02月11日
    浏览(54)
  • 苹果手机照片如何导入电脑?无损快速的传输办法分享!

    前些天小编的朋友联系到我,说是自己苹果手机里面的照片太多,有好几千张,不知道该怎么快而无损地传到电脑。我想遇到这种情况的不止是小编的朋友,生活中遇到手机照片导入电脑的同学不在少数。不管是苹果手机还是安卓手机,内存都是有限的,照片稍微一多片会显

    2024年02月05日
    浏览(45)
  • 苹果mac电脑如何安装虚拟机?CrossOver Mac2023

    Mac虚拟机怎么安装系统?macOS系统无法正常安装Windows应用,无法正常使用Windows系统中的文件。在macOS系统中安装虚拟机是一种比较恰当的解决方案。mac电脑怎么安装虚拟机?mac电脑安装虚拟机需要根据个人需求,有选择性地安装,因为有些虚拟机并不支持M1。下面我们来看详

    2024年02月16日
    浏览(104)
  • MAC苹果笔记本电脑如何彻底清理垃圾文件软件?

    苹果电脑以其流畅的操作系统和卓越的性能而备受用户喜爱。然而,随着时间的推移,系统可能会积累大量垃圾文件,影响性能。本文将介绍苹果电脑怎么清理垃圾文件的各种方法,以提升系统运行效率。 CleanMyMac X是一款专业的Mac清理软件,可智能清理mac磁盘垃圾和多余语言

    2024年02月03日
    浏览(57)
  • 如何将电脑上的音乐导入iphone,怎样将电脑音乐导入苹果手机中

    如何将电脑上的音乐导入iphone?要在苹果手机上听您喜欢的音乐,您可能需要将音乐从另一台装置(无论是电脑、iPhone、iPad 还是iPod touch )传输到您的iPhone。我们经常会在电脑上下载一些自己喜欢的歌曲,为了在手机上也能听到这些歌曲,我们需要将音乐从电脑传输到iPhon

    2024年02月09日
    浏览(62)
  • 苹果电脑怎么清理垃圾和缓存文件,mac如何清理系统缓存文件

    电脑使用的时间越久,系统运行就会变得越来越卡,这是Windows和Mac系统都会出现的现象。为了提高系统运行速度,我们有必要清理一下电脑缓存。那么 苹果电脑怎么清理垃圾和缓存文件 ?本指南将详细讲解清理Mac缓存的技巧,还补充了怎样恢复Mac缓存的方法。 目前“电脑缓

    2024年02月04日
    浏览(60)
  • 【云原生】Docker镜像的创建 Dockerfile 多阶段构建原理和使用场景

    创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 (1)首先启动一个镜像,在容器里做修改  docker run -it --name web centos:7 /bin/bash     #启动容器  ​  yum install -y epel-release  #安装epel源  yum install -y nginx         #安装ng

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包