基于 Docker 的 go grpc quickstart

news2024/10/8 19:57:56

工作之后一直使用的 RPC 框架是 Apache 的 thrift,现在发现 grpc 更流行,所以也要学习一下,先来简单的跑一下 demo。在本地安装运行也很方便,不过因为有了 docker,所以在 docker 里面安装运行隔离性更好,顺便也提升 docker 命令行的熟练度。

1.编写 Dockerfile 文件

FROM golang:1.20.11-bullseye
RUN apt-get update \ 
    && apt-get install -y protobuf-compiler \
    && go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 \
	&& go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 \
	&& export PATH="$PATH:$(go env GOPATH)/bin"
CMD ["/bin/bash"]

2.构建镜像

docker build -t rpc_go:0.1 .

在这里插入图片描述

官方文档这里强调要确保版本号是 3+,所以要执行这个命令看一下。

在这里插入图片描述

在这里插入图片描述

3.拉取示例代码

git clone -b v1.63.0 --depth 1 https://github.com/grpc/grpc-go

在这里插入图片描述

注意:这个代码没有直接打包到镜像里面,因为之后还需要进行修改,而且容器内的东西关掉就没了,所以我是把代码拉取到本地(在启动镜像的时候挂载进去),因为我还要看代码的,修改也方便。

4.启动容器

启动服务端,它拉取必要的依赖,然后监听 50051 端口。

注意:这里的 ${pwd} 这个语法是 Windows 的,如果是 Linux 应该使用 $(pwd) 才对。

在这里插入图片描述

使用 exec 进入容器,运行客户端:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1568672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建第一个ArkTS应用(Stage模型)

创建ArkTS工程 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发(本文以应用开发为例,Atomic Servi…

运筹学经典问题(八):CVRP和VRP-TW

文章目录 问题描述问题建模决策变量数学建模基于容量的消除子环的约束 (load-based SECs) CVRP完整的数学模型加上时间窗限制的CVRP 问题描述 给定一个图,图上的点代表客户,边代表客户之间的路线,边的权重代表客户之间…

生成式人工智能与 LangChain(预览)(上)

原文:Generative AI with LangChain 译者:飞龙 协议:CC BY-NC-SA 4.0 一、生成模型是什么? 人工智能(AI)取得了重大进展,影响着企业、社会和个人。在过去的十年左右,深度学习已经发…

联达动力OA 多处任意文件上传漏洞复现

0x01 产品简介 联达动力OA是PHPOA推出的新一代OA系统,系统支持性好、安全、数据高速缓存化;支持100+应用自行安装与定义,应用表单自定义,支持应用无代码开发,支持多语言。 0x02 漏洞概述 联达动力OA /FileManage/UpLoadFile.aspx、/Hosp_Portal/uploadLogo.aspx、/Dept_Por…

基于51单片机智能加湿器控制系统

基于51单片机智能加湿器控制系统 (仿真+程序+原理图) 功能介绍 具体功能: 1.LCD1602实时显示湿度值(湿度范围10%-95%)和湿度阈值; 2.可以通过按键设置湿度阈值范围; 3…

ES6展开运算符

1.展开可迭代对象(简单理解为数组和伪数组),如数组、 NodeList 、arguments。 可以通过展开运算符把一个伪数组转换为数组 const a [...document.body.children]; console.log(a); console.log(Array.isArray(a));2.实现数组的浅拷贝 cons…

什么?穷哥们没钱RLHF?跟我一起DPO吧,丐版一样用

本次DPO训练采用TRL的方式来进行训练 Huggingface TRL是一个基于peft的库,它可以让RL步骤变得更灵活、简单,你可以使用这个算法finetune一个模型去生成积极的评论、减少毒性等等。 本次进行DPO的模型是一个500M的GPT-2,目的是训练快&#x…

Anaconda如何切换国内镜像源

一、anaconda如何切换阿里镜像源 在Anaconda中切换到阿里云镜像源可以通过以下步骤进行: 1、打开终端(Windows)或者命令行界面(macOS/Linux)。 2、执行以下命令来配置阿里云镜像源: conda config --add…

复现k8s黄金票据学习

1.什么是黄金票据 在 Kubernetes 中,"黄金票据"并不是一个常见的术语。可能你想了解的是服务账户(Service Account)。服务账户是 Kubernetes 中用于身份验证和授权的一种机制。它们允许 Pods 或其他工作负载在 Kubernetes 集群中与…

Java-继承-定义Student类继承于Person类(例)

我们书接上回:这一章,我们进入"继承"。 先来了解题目有关继承的需求:(本题是为知识服务,也可用于练手) 题目: 已有一个类Person类,代码如下: Person类定义…

模拟退火遗传算法GASA-附MATLAB代码

模拟退火遗传算法(Simulated Annealing Genetic Algorithm,SAGA)结合了模拟退火算法(Simulated Annealing,SA)和遗传算法(Genetic Algorithm,GA)的优点,用于解…

基于springboot+vue+Mysql的招生管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

网络基础(二)——HTTPS协议原理

目录 1、概念准备 1.1、HTTPS是什么 1.2、什么是加密 1.3、为什么要进行加密 1.4、常见的加密方式 对称加密 非对称加密 1.5、数据摘要&&数据指纹 1.6、数字签名 2、HTTPS的工作过程探究 2.1、方案1 - 只使用对称加密 2.2、方案2 - 只使用非对称加密 2.3、…

多线程中常用的一些方法介绍

目录 1. setName和getName方法 2. 静态方法currentThread 3. 静态方法sleep 4. setPriority和getPriority方法 5. setDaemon方法 6. 静态方法yield 7. join方法 下面介绍这些方法的使用,以下面的MyThread为例: public class MyThread extends Th…

电商系列之促销

> 插:AI时代,程序员或多或少要了解些人工智能,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家…

SpringBoot + Vue + Nginx前后端分离项目本地部署(Win)

SpringBoot Vue Nginx前后端分离项目本地部署步骤 本地部署所需步骤 将后端打包好的jar文件和前端生成的静态资源文件放入同一目录启动Spring Boot应用配置Nginx并重启访问 http://your_domain 查看部署效果 前端Vue项目部署 将写好的vue代码的目录下运行 npm run build …

956: 约瑟夫问题的实现

【学习版】 【C语言】 #include <iostream> #include <string> #include <algorithm> #include <cmath> #include <cstdlib> using namespace std; typedef struct Lnode {int date;struct Lnode* next; }Lnode, * Linklist; int In(Linklist&…

《数据结构学习笔记---第十篇》--- 堆堆排序(超详细图解)

目录 1.堆是什么? 2.问题引入&#xff1a;当我们插入一个新的元素时&#xff0c;那么他还是堆吗。 3.堆的元素插入 4.问题引入&#xff1a;当我们删除一个堆顶元素时&#xff0c;我们又该如何调整呢&#xff1f; 5.堆顶元素删除 6.如何建堆&#xff1f; 6.1向上调整建堆…

面试算法-140-接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2…

网络编程(TCP、UDP)

文章目录 一、概念1.1 什么是网络编程1.2 网络编程中的基本知识 二、Socket套接字2.1 概念及分类2.2 TCP VS UDP2.3 通信模型2.4 接口方法UDP数据报套接字编程TCP流套接字编程 三、代码示例3.1 注意点3.2 回显服务器基于UDP基于TCP 一、概念 首先介绍了什么是网络编程&#xff…