尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Docker - 04 - 连接postgres容器并迁移

Docker - 04 - 连接postgres容器并迁移
📅 发布时间:2026/7/2 12:26:34

临时用 Compose 暴露的端口(与 .env 密码一致)

宿主机通过 Compose 映射5433:5432连接容器内 PostgreSQL,下文示例统一使用localhost:5433。

1. 临时环境变量

$env:DATABASE_URL="postgresql://postgres:你的密码@localhost:5433/nodejs_study?schema=public"

这行只在 当前 PowerShell 窗口(Windows 本机) 里设了一个临时环境变量。

环境变量优先级

情况用哪个
PowerShell 里先执行了 $env:DATABASE_URL=…用进程里的(当前终端临时值)
没设 $env:DATABASE_URL从.env加载(dotenv/config)
两个都有进程环境变量优先(dotenv 通常不覆盖已存在的变量)

✅ 实际流程

实际发生的是:

┌─────────────────────────────────────────────────────────┐ │ Windows 本机 │ │ │ │ ① npx prisma migrate deploy 启动(Node 进程,在本机) │ │ ② 读 DATABASE_URL → 知道连 localhost:5433 │ │ ③ 读项目里 prisma/migrations/*.sql(文件在本机磁盘) │ │ ④ 通过 TCP 连 localhost:5433 │ │ │ │ │ ▼ Docker 端口转发 │ │ ┌──────────────────────────────────┐ │ │ │ nodejs-postgres 容器 │ │ │ │ PostgreSQL 监听 容器内 :5432 │ │ │ │ 数据存在 pgdata 卷里 │ │ │ │ │ │ │ │ ⑤ 收到 SQL:CREATE TABLE ... │ │ │ │ ⑥ 在容器自己的库里执行、存数据 │ │ │ └──────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘

迁移程序在本机,SQL 文件在本机,容器只负责执行 SQL 并保存结果。

Prisma CLI 会:

  • 用DATABASE_URL连上数据库
  • 查_prisma_migrations表,看哪些迁移已执行
  • 对未执行的迁移,逐条发送 SQL
  • 记录迁移历史

2. 迁移 SQL 能建表,不会产生数据

只有 migration 文件里 本身写了 数据类 SQL,deploy 时才会在 当前DATABASE_URL连的那套库 里产生数据,例如:

INSERTINTO"Product"(name,price,stock)VALUES('示例',9.99,100);

3. 理解 compose 文件及环境变量的关系

1. compose 里,是为了初始化一个数据库

environment:POSTGRES_USER:postgresPOSTGRES_PASSWORD:yiyi199836# 与 .env 里 DATABASE_URL 密码一致POSTGRES_DB:nodejs_study

对应docker-compose.yml中的端口映射:

ports:-"5433:5432"# 宿主机 5433 → 容器内 5432

2. 临时环境变量

$env:DATABASE_URL="postgresql://postgres:密码@localhost:5433/nodejs_study?schema=public"

执行这个命令是为了能够连接上面数据库,然后迁移的时候执行 SQL 语句建表;
如果不在当前进程中设置环境变量,就要改.env文件,连接容器或者 PostgreSQL,连哪个就要端口号、账户、密码改成对应的。

相关新闻

  • LP5812与MKV58实现RGB灯光控制方案详解
  • Display Driver Uninstaller:彻底解决显卡驱动问题的专业工具
  • C++20:数据序列处理的新工具Ranges(上)

最新新闻

  • hAL-TIM
  • Python处理超大CSV文件的内存崩溃与性能优化
  • 暗黑破坏神2存档编辑器:5分钟学会修改角色与装备的完整指南
  • 2026最新测评:16款降AI率网站实测,这款降AI率效果一骑绝尘!
  • 嵌入式系统按键优化:74HC32与PIC24的GPIO节省方案
  • 三步搞定中国车牌生成:从AI训练到创意设计的完整指南

日新闻

  • Python Playwright录制功能:从零到一构建自动化测试脚本
  • 如何用开源工具永久保存你心爱的小说:novel-downloader全攻略
  • In-Context Learning不是教知识,而是模式对齐:从5个示例到100个工业级样本的真相

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号