当前位置: 首页 > news >正文

win11下wsl使用开发pg拓展并安装到docker全程记录

折腾了大半天,记录下rust开发pg拓展并安装到生产docker全程:

  1. 使用pgrx开发过程省略,注意和生产pg版本对上,我的是pg14

  2. 开发的终点是cargo pgrx package ,我的项目叫first,那么项目目录下 /target/release/first-pg14/usr/share/postgresql/14/extension/ 会生成一个sql和一个control文件, 同时/target/release/first-pg14/usr/lib/postgresql/14/lib 会生成so文件

  3. 启动dockers postgres

volumes:
# docker 和wsl共享/var/lib/docker/volumes/doc_pg/_datapg:services:postgres:build: .# image: postgres# command: postgres -c config_file=/etc/postgresql.conf container_name: mypgenvironment:POSTGRES_USER: "postgres"POSTGRES_PASSWORD: "你的密码"volumes:- pg:/var/lib/postgresql/dataports:- "5432:5432"# restart: always
  1. 拷贝三个文件
sudo docker cp  /mnt/d/myrust/pg_ext/first/target/release/first-pg14/usr/share/postgresql/14/extension/first.control  mypg:/usr/share/postgresql/14/extension/first.controlsudo docker cp /mnt/d/myrust/pg_ext/first/target/release/first-pg14/usr/share/postgresql/14/extension/first--0.0.0.sql  mypg:/usr/share/postgresql/14/extension/first--0.0.0.sqlsudo docker cp /mnt/d/myrust/pg_ext/first/target/release/first-pg14/usr/lib/postgresql/14/lib/first.so   mypg:/usr/lib/postgresql/14/lib/first.so

也可以用py脚本

import os
root="/mnt/d/myrust/pg_ext"
project="first"
version="14"
compile_dir=f"{root}/{project}/target/release/{project}-pg{version}"
src_control=f"{compile_dir}/usr/share/postgresql/{version}/extension/{project}.control"
src_sql=f"{compile_dir}/usr/share/postgresql/{version}/extension/{project}--0.0.0.sql"
src_so=f"{compile_dir}/usr/lib/postgresql/{version}/lib/{project}.so"container="mypg"
tar_control=f"{container}:/usr/share/postgresql/{version}/extension/{project}.control"
tar_sql=f"{container}:/usr/share/postgresql/{version}/extension/{project}--0.0.0.sql"
tar_so=f"{container}:/usr/lib/postgresql/{version}/lib/{project}.so"os.system(f"echo '密码' | sudo -S docker cp {src_control} {tar_control}")
os.system(f"echo '密码' | sudo -S docker cp {src_sql} {tar_sql}")
os.system(f"echo '密码' | sudo -S docker cp {src_so} {tar_so}")

5 进去psql安装

docker exec -it mypg psql -U postgresSELECT * FROM pg_available_extensions; 显示看有无上面的first create extension first;注意是项目文件夹名称 ,重复安装先drop
drop extension first;
select hello_first();

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 168套Android项目源码和120多套各类别小程序模板源码
  • 除猫毛应该用哪款宠物空气净化器?希喂、安德迈哪款更值得推荐
  • CleanMyMac X2024破解激活码许可证号码
  • MybatisPlus中@EnumValue注解介绍、应用场景和示例代码
  • Vue计算属性(computed)的使用方法及使用场景总结
  • python连接MySQL获取表中数据
  • 云计算之ECS
  • SprinBoot+Vue问卷调查微信小程序的设计与实现
  • C++模板(初识)
  • 【Android】Material Design编写更好的UI
  • 火狐浏览器现在可以让你在不切换标签的情况下访问你最喜欢的AI聊天机器人 - 具体方法如下
  • 人工智能新能源数字化转型商业模式专家教授学者讲师培训师唐兴通谈新媒体营销大客户销售大模型创新思维短视频内容社私域数字经济人工智能
  • 【重构获得模式 Refactoring to Patterns】
  • Python知识点:Python研发中,如何使用JIRA进行项目管理
  • 传统CV算法——边缘检测算法Canny算法实战
  • 2019.2.20 c++ 知识梳理
  • Android交互
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java-详解HashMap
  • leetcode-27. Remove Element
  • leetcode98. Validate Binary Search Tree
  • node.js
  • Python进阶细节
  • SQLServer插入数据
  • Swoft 源码剖析 - 代码自动更新机制
  • 机器学习中为什么要做归一化normalization
  • 前端面试之闭包
  • 如何使用 JavaScript 解析 URL
  • 如何学习JavaEE,项目又该如何做?
  • 深入 Nginx 之配置篇
  • 正则学习笔记
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 我们雇佣了一只大猴子...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #Java第九次作业--输入输出流和文件操作
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (黑马C++)L06 重载与继承
  • (十)Flink Table API 和 SQL 基本概念
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .java 9 找不到符号_java找不到符号
  • .NET框架设计—常被忽视的C#设计技巧
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @font-face 用字体画图标
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [Android] Implementation vs API dependency
  • [Android]常见的数据传递方式
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
  • [C#][DevPress]事件委托的使用