基于 Docker 的 python grpc quickstart

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

1.编写 Dockerfile 文件

sh 复制代码
FROM python:3.12
RUN python3 -m pip install --upgrade pip \
    && python3 -m pip install grpcio \
    && python3 -m pip install grpcio-tools
CMD ["/bin/bash"]

2.构建镜像

docker build -t rpc_py:0.2 .

注意:因为我镜像是分层构建的,它的这个 RUN 我之前已经构建过来,我这个 Dockerfile 只是修改了 CMD,所以它构建的很快。

3.拉取示例代码

git clone -b v1.62.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc

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

4.启动容器

启动服务端,它会一直监听在 50051 端口。现在文件夹 grpc 是挂载进容器的,所以如果希望修改它里面的文件,直接在本地修改保存就行了,然后在镜像里面重启服务端或者客户端就可以了。

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

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

相关推荐
abc123456sdggfd11 小时前
C#怎么使用gRPC双向流_C#如何实现高效RPC调用【进阶】
jvm·数据库·python
身如柳絮随风扬11 小时前
使用 Docker 部署禅道并实现自动化部署——从项目搭建到运维自动化的完整指南
运维·docker·自动化
qq_4142565711 小时前
Redis如何解决哨兵通知延迟问题_优化客户端连接池动态刷新拓扑的订阅监听机制
jvm·数据库·python
m0_6765443811 小时前
MySQL如何配置不同级别的事务锁_调整innodb_locks_unsafe_for_binlog
jvm·数据库·python
dFObBIMmai11 小时前
mysql索引区分度不足如何解决_mysql多列索引组合优化
jvm·数据库·python
神明93111 小时前
SQL处理JOIN查询中数据倾斜的问题_散列连接键或增加缓存
jvm·数据库·python
m0_5913647311 小时前
c++ 实时傅里叶变换stft c++如何进行音频的频谱分析
jvm·数据库·python
2401_8323655212 小时前
MySQL无法修改数据表结构_检查磁盘空间与元数据锁
jvm·数据库·python
小熊Coding12 小时前
懂车帝汽车销售数据可视化分析系统
python·信息可视化·django·汽车·数据可视化分析·懂车帝·汽车销售数据分析
X566112 小时前
c++ aot编程 c++如何使用oneapi进行跨平台并行编程
jvm·数据库·python