news 2026/7/2 12:18:17

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker - 04 - 连接postgres容器并迁移

临时用 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,连哪个就要端口号、账户、密码改成对应的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 12:16:25

LTE Cat 1与STM32超低功耗物联网节点设计实践

1. 项目背景与核心需求在智能家居、工业监测、远程医疗等物联网场景中,稳定可靠的高速数据连接是系统设计的核心挑战。传统Wi-Fi方案受限于覆盖范围,而2G/3G网络又难以满足实时视频传输等高带宽需求。这正是LEXI-R10801D LTE模块与STM32L021K4超低功耗MC…

作者头像 李华
网站建设 2026/7/2 12:14:42

终极Gofile下载革命:告别手动复制粘贴的智能解决方案

终极Gofile下载革命:告别手动复制粘贴的智能解决方案 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 你是否曾经为了下载几个Gofile文件,不得不在浏…

作者头像 李华
网站建设 2026/7/2 12:14:36

专业的近视干预验光师

在2026年7月1日,不少人配了最贵的眼镜,却依旧控制不住视力问题,这一现象值得深入探讨。宁夏银川市视光学研究中心作为深耕视光领域二十余年的专业机构,或许能为我们提供一些有价值的见解。行业现状与痛点目前,视力问题…

作者头像 李华
网站建设 2026/7/2 12:12:56

工业4-20mA电流环发射器设计与XTR116应用解析

1. 工业4-20mA电流环发射器的设计背景与核心需求 在工业自动化领域,4-20mA电流环传输技术已经持续服役超过60年。这种看似"古老"的模拟信号传输方式,至今仍是过程控制系统中传感器到PLC之间最可靠的通信手段。我参与过多个石化厂区的仪表改造项…

作者头像 李华
网站建设 2026/7/2 12:12:46

制造企业如何构建一套真正可落地的全厂物流数智化体系?

导语当制造企业开始规划物流数智化时,最容易陷入两个误区:一是把数智化理解为采购更多自动化设备,二是希望通过一套“大而全”的系统一次性解决所有问题。结果往往是设备不少、系统不少,但找货、等待、缺料、拥堵和异常协调仍然存…

作者头像 李华
网站建设 2026/7/2 12:09:52

零基础看懂CRM:全方位拆解客户关系管理系统

你是否遇到过这些职场头疼场景:销售离职带走半壁核心客户,新人接手连对接人电话都找不到;10万市场推广费砸下去,只知道来了200条线索,最终成单多少、投入产出比多少全算不清;客户打电话投诉上次买的设备出故…

作者头像 李华