FEATURED · 精选文章

146 codex安装docker,WSL2,PostgreSQL12+pgAdmin 4,如何输入指令

发布时间 / 2026/8/25 21:08:57
来源 / 创域科博编辑部
栏目 / 资讯中心
146 codex安装docker,WSL2,PostgreSQL12+pgAdmin 4,如何输入指令 背景我想安装一个PostgreSQL进行学习看视频是说使用12比较稳妥 然后一般使用图像化界面操作也就是pgAdmin 4然后我想直接使用codex安装本文章主要记录可参考过程1.codex输入指令然后会询问你一些问题按需求回复即可我现在需要学习postgreSQL12,使用图形界面 postgre admin14来学习 想使用docker来安装但是我电脑上没有docker请详细说明步骤 生成md文档告诉我如何一步一步安装和配置 顺便你帮我安装一下我说到的这些生成的md放E:\study_file\技术文档总集这里2.我之前下载过一个安装包D:\docker_install这个下面有安装包你看适合吗可以安装在这个目录下面3.生成计划PostgreSQL 12 pgAdmin 4 Docker 学习环境安装方案 ## 摘要 - 现有 Docker Desktop 4.70.0 安装包数字签名有效可以安装但将按你的选择下载当前官方最新版现有安装包保留备用。 - 电脑满足运行条件Windows 11 家庭版 64 位、约 32 GB 内存、Hypervisor 已启用、D 盘剩余约 260 GB。 - 使用 Docker Desktop 的 WSL 2 后端同时运行 PostgreSQL 12.22 和 pgAdmin 4。 - PostgreSQL 12 已于 2024-11-21结束维护仅用于本机学习不用于生产环境。[PostgreSQL 官方说明](https://www.postgresql.org/support/versioning/) - 采用以下目录 - Docker 程序D:\docker_install\DockerDesktop - Docker 虚拟磁盘D:\docker_install\data - 安装包D:\docker_install\packages - PostgreSQL 项目D:\docker_install\postgresql12-lab - 教程文档E:\study\_file\技术文档总集\PostgreSQL12_Docker_pgAdmin4_安装配置与学习环境.md ## 实施步骤 1. 安装前检查 - 再次确认 TCP 端口 5432、5050 未被占用。 - 从 [Docker 官方页面](https://docs.docker.com/desktop/setup/install/windows-install/)下载最新版 x86_64 安装包。 - 验证 Docker Inc 数字签名和官方 SHA-256保留原有 4.70.0 安装包不覆盖、不删除。 2. 启用 WSL 2 - 管理员权限执行 wsl --install --no-distribution不额外安装 Ubuntu。 - 在系统要求时重启电脑你重新打开本任务后继续。 - 重启后执行 wsl --update、wsl --set-default-version 2确认 WSL 满足 Docker Desktop 要求。[微软 WSL 安装说明](https://learn.microsoft.com/windows/wsl/install) 3. 安装 Docker Desktop - 使用 WSL 2 后端和 Linux 容器模式。 - 通过官方安装参数指定程序目录和 WSL 虚拟磁盘目录禁用不适用于家庭版的 Windows 容器功能。 - Docker 服务协议由你在首次启动界面中亲自确认不自动代替你接受。 - 验证 docker version、docker compose version、docker info并确认 Docker 数据实际写入 D 盘。 4. 创建 PostgreSQL 学习项目 在 D:\docker_install\postgresql12-lab 创建 - compose.yaml - .env - .gitignore - servers.json 配置内容 - PostgreSQL 镜像固定为最终版本 postgres:12.22-bookworm。 - pgAdmin 镜像固定为实施时的官方稳定版不使用浮动的 latest 标签。 - PostgreSQL 数据库study_db - PostgreSQL 用户postgres - PostgreSQL 密码123456 - pgAdmin 登录邮箱adminexample.com - pgAdmin 密码123456 - PostgreSQL 和 pgAdmin 均使用持久化 Docker 卷。 - 添加数据库健康检查和容器启动依赖。 - 使用 servers.json 预先注册 PostgreSQL 服务pgAdmin 内部连接地址使用容器服务名而不是 localhost。 5. 启动与验证 - 执行 docker compose pull 和 docker compose up -d。 - pgAdmin 地址http://127.0.0.1:5050 - PostgreSQL 地址127.0.0.1:5432 - 登录 pgAdmin连接 study_db执行版本查询和建表、插入、查询示例。 - 停止并重新启动容器确认测试数据和 pgAdmin 配置仍然存在。 - 所有端口只绑定 127.0.0.1不会向局域网开放123456 仅允许用于这个本机学习环境。 6. 生成详细 Markdown 教程 文档将包含 - 本机环境检查结果 - WSL 2 和 Docker Desktop 图形化、命令行两套安装步骤 - 每次需要管理员权限或重启的位置 - 完整 Compose 配置及逐项解释 - pgAdmin 登录、注册服务器和执行 SQL 的图文式操作路径 - 容器启动、停止、重启、查看日志和查看状态命令 - 数据持久化、备份和恢复方法 - 修改密码和端口的方法 - WSL、虚拟化、镜像下载、端口冲突、连接失败等常见故障处理 - 清空学习环境的命令并对会删除数据的操作添加醒目警告 - PostgreSQL 12 已停止维护的说明和未来升级建议 - Docker、微软、PostgreSQL、pgAdmin 官方资料链接 ## 验收测试 - wsl --version 和 wsl --status 正常默认版本为 WSL 2。 - Docker Desktop 能启动Docker Engine 为 Linux 模式。 - Docker 程序及虚拟磁盘位于指定的 D 盘子目录。 - 两个容器均为运行状态PostgreSQL 健康检查通过。 - SELECT version(); 返回 PostgreSQL 12.22。 - pgAdmin 可通过 127.0.0.1:5050 登录并连接数据库。 - 能完成建表、插入、查询容器重启后数据仍存在。 - 局域网地址不能直接访问 5432 或 5050。 - Markdown 文档成功写入指定 E 盘目录并额外保留一份可在 Codex 中下载的副本。 ## 假设与故障策略 - 此环境用于个人学习符合 Docker Desktop 免费使用场景。 - 安装过程中你可以响应 UAC 管理员提示并允许一次系统重启。 - 网络允许从 Docker 官方站和 Docker Hub 下载安装包及镜像。 - 如果最新版安装包下载或签名验证失败将停止安装并报告原因不会静默改用旧版本。 - 不删除或覆盖 D:\docker_install\Docker Desktop Installer.exe。 - 不启用远程数据库访问不把弱密码用于生产环境。4.什么是WSL有什么用如何安装打开使用安装方式运行方式5.生成的md文档以及使用教程# PostgreSQL 12 pgAdmin 4 Docker Desktop 安装配置教程 适用电脑Windows 11 家庭版中文版64 位 本机学习环境Docker Desktop 4.87.0 WSL 2.7.12 PostgreSQL 12.22 pgAdmin 4 9.17 文档生成日期2026-08-24 ## 1. 最终效果和目录 安装完成后通过浏览器访问 pgAdmin - pgAdmin 地址http://127.0.0.1:5050 - pgAdmin 登录邮箱adminexample.com - pgAdmin 登录密码123456 - PostgreSQL 主机Windows 软件连接时127.0.0.1 - PostgreSQL 主机pgAdmin 容器连接时postgres - PostgreSQL 端口5432 - 数据库study_db - 用户postgres - 密码123456 目录规划 text C:\Users\30414\AppData\Local\Programs\DockerDesktop └─ Docker Desktop.exe # Docker Desktop 当前用户程序 D:\docker_install ├─ Docker Desktop Installer 4.87.0.exe ├─ data # Docker 的 WSL 虚拟磁盘、镜像和容器数据 └─ postgresql12-lab # PostgreSQL 学习项目 ├─ compose.yaml ├─ .env ├─ .gitignore ├─ servers.json └─ backup # SQL 备份目录 安全提醒123456 是弱密码。本教程把端口严格绑定到 127.0.0.1只适合这台电脑上的学习环境。不要把此密码用于生产、云服务器或局域网开放环境。 ## 日常快速使用指南以后主要看这一节 下面把“图像工具”理解为“图形工具”。本环境有两个图形界面 - **Docker Desktop**负责启动和管理 Docker 引擎、容器、镜像和数据卷。 - **pgAdmin 4**浏览器里的 PostgreSQL 图形管理工具用于建库、建表、查询和查看数据。 ### A. 每次开机后怎样启动 #### 方法一使用开始菜单和 Docker Desktop 图形界面 1. 按 Windows 键搜索并打开 **Docker Desktop**。 2. 等待右下角 Docker 鲸鱼图标出现并确认 Docker Desktop 显示 Engine 正在运行。 3. 在 Docker Desktop 左侧打开 **Containers**。 4. 找到 postgresql12-lab 项目。如果两个容器没有运行点击项目右侧的启动按钮。 5. 两个容器都显示绿色运行状态后即可访问 pgAdmin。 两个容器的用途 - postgresql12-dbPostgreSQL 12 数据库。 - postgresql12-pgadminpgAdmin 4 图形界面。 compose.yaml 已设置 restart: unless-stopped。只要 Docker Desktop 随 Windows 登录启动容器通常也会自动恢复运行。可以在 Docker Desktop 的 **Settings General** 中按需启用 **Start Docker Desktop when you sign in to your computer**。 #### 方法二使用 PowerShell推荐最稳定 打开一个新的 PowerShell 窗口执行 powershell $env:PATH$env:LOCALAPPDATA\Programs\DockerDesktop\resources\bin;$env:PATH Set-Location D:\docker_install\postgresql12-lab docker compose up -d docker compose ps 看到 postgresql12-db 和 postgresql12-pgadmin 的状态都是 Up数据库就已经启动。docker compose up -d 可以反复执行无论容器此前是停止状态、被删除状态还是已经运行它都会把环境恢复到应有状态。 如果 PowerShell 提示找不到 docker 命令先关闭并重新打开 PowerShell仍然找不到时保留上面第一行临时添加 PATH 的命令。 也可以用一组命令启动容器并直接打开 pgAdmin powershell $env:PATH$env:LOCALAPPDATA\Programs\DockerDesktop\resources\bin;$env:PATH Set-Location D:\docker_install\postgresql12-lab docker compose up -d Start-Process http://127.0.0.1:5050 ### B. 怎样访问 PostgreSQL 和 pgAdmin #### 访问 pgAdmin 图形界面 在浏览器地址栏输入 http://127.0.0.1:5050 登录信息 - 邮箱adminexample.com - 密码123456 登录后在左侧依次展开 text Servers └─ PostgreSQL 12 学习库 第一次连接数据库时pgAdmin 会询问 PostgreSQL 密码输入 123456。个人学习电脑上可以勾选保存密码如果电脑会被他人使用则不要保存。 #### 其他 Windows 数据库软件的连接信息 以后使用 DBeaver、DataGrip、Navicat 或程序代码连接时填写 | 配置项 | 值 | |---|---| | Host/主机 | 127.0.0.1 | | Port/端口 | 5432 | | Database/数据库 | study_db | | Username/用户名 | postgres | | Password/密码 | 123456 | 注意主机名的区别 - Windows 浏览器、数据库客户端和本机程序使用 127.0.0.1。 - pgAdmin 运行在 Docker 容器中因此它连接 PostgreSQL 时使用容器服务名 postgres。 - 当前端口只监听本机 127.0.0.1局域网中的其他电脑无法访问这是学习环境的安全设置。 ### C. 怎样使用 pgAdmin 图形工具 #### 1. 认识左侧对象树 连接服务器后依次展开 text Servers └─ PostgreSQL 12 学习库 └─ Databases └─ study_db └─ Schemas └─ public └─ Tables 如果刚创建的数据库或表没有出现右键上一级节点选择 **Refresh**。 #### 2. 用图形界面新建数据库 1. 右键 **Databases**。 2. 选择 **Create Database...**。 3. 在 **Database** 中输入数据库名例如 practice_db。 4. **Owner** 选择 postgres。 5. 点击 **Save**。 日常练习可以直接使用已经创建好的 study_db不必每次都新建数据库。 #### 3. 用图形界面新建表 以创建学生表为例 1. 展开 **study_db Schemas public**。 2. 右键 **Tables**选择 **Create Table...**。 3. 在 **General** 页把 Name 填为 students_gui。 4. 打开 **Columns** 页依次添加以下列 | 列名 | 数据类型 | Not NULL | Primary key | |---|---|---:|---:| | id | bigserial | 是 | 是 | | name | character varying(50) | 是 | 否 | | age | integer | 否 | 否 | 5. 点击 **Save**。 6. 右键 **Tables** 并选择 **Refresh**确认能看到 students_gui。 #### 4. 用表格直接添加和修改数据 1. 右键 students_gui。 2. 选择 **View/Edit Data All Rows**。 3. 在结果表格最后的空白行中填写 name 和 ageid 是自动编号可以留空。 4. 点击工具栏上的 **Save Data Changes** 保存按钮。 5. 修改已有单元格后也要点击保存只关闭页面可能不会保存修改。 #### 5. 使用 Query Tool 执行 SQL 1. 右键左侧的 study_db。 2. 选择 **Query Tool**。 3. 在上方 SQL 编辑区粘贴下面的练习语句 sql CREATE TABLE IF NOT EXISTS students_sql ( id BIGSERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, age INTEGER CHECK (age 0) ); INSERT INTO students_sql (name, age) VALUES (张三, 20), (李四, 22); SELECT * FROM students_sql ORDER BY id; 4. 点击工具栏上的执行按钮闪电/播放图标或按 F5。 5. 下方 **Data Output** 显示查询结果**Messages** 显示执行信息或错误。 常用 SQL 操作 sql -- 查询 SELECT * FROM students_sql; -- 修改 UPDATE students_sql SET age 21 WHERE name 张三; -- 删除一行 DELETE FROM students_sql WHERE name 李四; 执行 UPDATE 或 DELETE 前建议先用相同的 WHERE 条件执行一次 SELECT确认将要影响哪些数据。 #### 6. 用 pgAdmin 图形界面备份与恢复 备份 1. 右键 study_db选择 **Backup...**。 2. Filename 选择 pgAdmin 存储区中的文件名例如 study_db.backup。 3. Format 选择 **Custom**。 4. 点击 **Backup**。 5. 如需把文件保存到 Windows可在 pgAdmin 的 **Tools Storage Manager** 中找到该文件并下载。 恢复 1. 最好先创建一个空数据库例如 study_restore_gui。 2. 右键该数据库选择 **Restore...**。 3. 选择已经上传到 pgAdmin 存储区的 .backup 文件。 4. 点击 **Restore**。 如果提示找不到 PostgreSQL 12 备份程序按本文第 11 节把 PostgreSQL 12 Binary Path 设置为 /usr/local/pgsql-12。如果只是想把 .sql 文件直接保存在 D:\docker_install\postgresql12-lab\backup使用本文第 10 节的 PowerShell 命令更方便。 ### D. 怎样关闭数据会不会丢 关闭浏览器页面只会关闭 pgAdmin 网页不会停止数据库也不会丢失数据。 日常停止容器 powershell $env:PATH$env:LOCALAPPDATA\Programs\DockerDesktop\resources\bin;$env:PATH Set-Location D:\docker_install\postgresql12-lab docker compose stop 也可以在 Docker Desktop 的 **Containers** 页面点击停止按钮。容器停止后可以从 Windows 右下角托盘中的 Docker 图标选择 **Quit Docker Desktop**。 下次使用时仍执行 powershell Set-Location D:\docker_install\postgresql12-lab docker compose up -d 数据库数据存放在 Docker 命名卷中因此 stop、重启电脑甚至执行 docker compose down 都不会删除数据。**不要执行 docker compose down -v除非你明确要永久清空数据库和 pgAdmin 配置。** ### E. 页面打不开时的快速检查 依次执行 powershell $env:PATH$env:LOCALAPPDATA\Programs\DockerDesktop\resources\bin;$env:PATH Set-Location D:\docker_install\postgresql12-lab docker info docker compose up -d docker compose ps docker compose logs --tail100 pgadmin - docker info 报错Docker Desktop 尚未完全启动先打开它并等待 Engine 正常。 - 容器不是 Up查看最后一条日志中的错误。 - 容器正常但网页打不开确认地址是 http://127.0.0.1:5050不是 https。 - 能打开 pgAdmin 但数据库连接失败主机应是 postgres端口 5432用户 postgres密码 123456。 ## 2. 已完成的安装前检查 本机检查结果 - Windows 11 家庭版中文版64 位Build 26200 - CPU13th Gen Intel Core i7-13650HX - 内存约 31.73 GB - Windows 已检测到 Hypervisor硬件虚拟化条件具备 - D 盘剩余空间约 260 GB - TCP 5432 和 5050 当前未被占用 - 当前没有安装 Docker、PostgreSQL 或 pgAdmin - WSL 命令存在但 WSL 功能尚未完成安装 - 原 Docker Desktop 4.70.0 安装包在 Windows Build 26200 上稳定返回退出码 -5未能安装现已按要求删除 - 最终安装包版本Docker Desktop 4.87.0.236836 - 安装包数字签名有效签名者为 Docker Inc - 最终安装包 SHA-2569AC03D4E900C0FDEE981D4BDE083A55FDFB28FFBA2CAE77726EFF2A437254822 PostgreSQL 12.22 是 12 系列最终版本。PostgreSQL 12 已于 2024-11-21 停止官方维护不再收到安全和缺陷修复只建议用于旧项目兼容学习。参考[PostgreSQL 版本支持策略](https://www.postgresql.org/support/versioning/)。 ## 3. 第一步启用 WSL 2 Docker Desktop 在 Windows 家庭版上使用 Linux 容器需要 WSL 2。Docker Desktop 自己会管理内部 Linux 环境因此本教程不额外安装 Ubuntu。 ### 3.1 使用图形界面打开管理员 PowerShell 1. 按 Windows 键。 2. 输入 PowerShell。 3. 右键“Windows PowerShell”或“终端”选择“以管理员身份运行”。 4. 在 UAC 窗口中选择“是”。 ### 3.2 安装 WSL 基础组件 执行 powershell wsl --install --no-distribution 在本机实际执行时旧版内置 WSL 命令返回了退出码 1没有完成快速安装。如果你以后在相似电脑上遇到相同情况请继续在管理员 PowerShell 中执行微软支持的手动启用命令 powershell dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 本机通过这两条命令成功启用了所需功能并返回 3010含义是“操作成功需要重新启动才能生效”。 如果系统提示需要重启请保存其他工作并重启电脑。重启之后重新打开 PowerShell执行 powershell wsl --update wsl --set-default-version 2 wsl --version wsl --status 预期结果能够看到 WSL 和内核版本默认版本为 2。 如果下载长时间停在 0.0%可尝试 powershell wsl --update --web-download 参考[微软 WSL 安装文档](https://learn.microsoft.com/windows/wsl/install)。 ## 4. 第二步安装 Docker Desktop 4.87.0 ### 4.1 本机实际成功的安装方式 这台电脑的 Windows Build 26200 在“所有用户 UAC 自定义程序目录”模式下会让 Docker 安装器退出并返回 -5。最终采用 Docker 官方推荐的“当前用户安装”模式程序位于当前用户的 %LOCALAPPDATA%不需要 UAC体积较大的 WSL 虚拟磁盘、镜像、容器和数据库数据仍然放在 D 盘。 在普通 PowerShell 中执行 powershell $installer D:\docker_install\Docker Desktop Installer 4.87.0.exe Start-Process -FilePath $installer -Wait -ArgumentList ( install, --user, --backendwsl-2, --wsl-default-data-rootD:\docker_install\data, --no-windows-containers ) 这些参数的作用 - --user按当前用户安装避开本机 UAC 重启兼容问题。 - --backendwsl-2使用 WSL 2 后端。 - --wsl-default-data-root把虚拟磁盘、镜像和容器数据放到 D 盘。 - --no-windows-containers只使用本教程需要的 Linux 容器减少额外权限与组件。 最终程序目录为 text C:\Users\30414\AppData\Local\Programs\DockerDesktop 参考[Docker Desktop Windows 安装与参数说明](https://docs.docker.com/desktop/setup/install/windows-install/)。 ### 4.2 首次启动 1. 从开始菜单打开 Docker Desktop也可以执行 powershell Start-Process $env:LOCALAPPDATA\Programs\DockerDesktop\Docker Desktop.exe 2. 阅读 Docker Subscription Service Agreement然后由你手动点击接受。 3. 等待左下角状态显示 Docker Engine 正在运行。 4. 如果提示登录 Docker Hub个人学习可以选择跳过拉取公开镜像不要求登录。 5. 确保处于 Linux containers 模式。 打开一个新的 PowerShell 验证 powershell docker version docker compose version docker info 本机验证结果Docker Desktop 4.87.0、Docker Engine 29.7.2、Docker Compose 5.4.0Engine 为 Linux/WSL 2 模式内核为 6.18.33.2-microsoft-standard-WSL2。 如果提示找不到 docker先关闭并重新打开 PowerShell仍未解决时重启一次电脑。 ## 5. 第三步检查学习项目配置 进入项目目录 powershell Set-Location D:\docker_install\postgresql12-lab Get-ChildItem -Force docker compose config --quiet 应当能看到 compose.yaml、.env、.gitignore、servers.json 和 backup。 ### 5.1 compose.yaml 的关键设计 - postgres:12.22-bookworm固定 PostgreSQL 12 最终补丁版本避免版本漂移。 - dpage/pgadmin4:9.17固定 pgAdmin 版本不使用浮动 latest。 - postgres_data持久保存数据库文件。 - pgadmin_data持久保存 pgAdmin 用户设置和服务器配置。 - 127.0.0.1:5432:5432数据库只接受本机访问。 - 127.0.0.1:5050:80pgAdmin 只接受本机浏览器访问。 - 健康检查数据库真正可以连接后才启动 pgAdmin。 - servers.json首次启动时自动注册名为“PostgreSQL 12 学习库”的连接。 ### 5.2 密码为什么放在 .env .env 内容为 dotenv POSTGRES_PASSWORD123456 PGADMIN_PASSWORD123456 .gitignore 已排除 .env避免以后误提交到 Git。即使如此真实项目也必须改用强密码和专门的密钥管理方案。 ## 6. 第四步拉取镜像并启动 确保 Docker Desktop 已经运行然后执行 powershell Set-Location D:\docker_install\postgresql12-lab docker compose pull docker compose up -d docker compose ps 第一次下载可能需要几分钟。正常状态应为 - postgresql12-dbUp、healthy - postgresql12-pgadminUp 查看启动日志 powershell docker compose logs --tail100 postgres docker compose logs --tail100 pgadmin 持续跟踪日志可使用 powershell docker compose logs -f 按 CtrlC 仅退出日志查看不会停止容器。 ## 7. 第五步使用 pgAdmin 4 ### 7.1 登录 pgAdmin 浏览器打开http://127.0.0.1:5050 输入 - Emailadminexample.com - Password123456 ### 7.2 连接 PostgreSQL 左侧 Servers 中应出现“PostgreSQL 12 学习库”。首次连接时输入数据库密码 123456可按需勾选保存密码。 如果没有自动出现可手动注册 1. 右键 Servers选择 Register Server。 2. General NamePostgreSQL 12 学习库。 3. Connection Host name/addresspostgres。 4. Port5432。 5. Maintenance databasestudy_db。 6. Usernamepostgres。 7. Password123456。 8. 点击 Save。 在 pgAdmin 容器内不能把数据库主机填写为 localhost。localhost 指向 pgAdmin 容器自己正确主机名是 Compose 服务名 postgres。 ### 7.3 执行第一段 SQL 依次展开 Servers PostgreSQL 12 学习库 Databases study_db右键 study_db选择 Query Tool执行 sql SELECT version(); SHOW server_version; CREATE TABLE students ( id BIGSERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, age INTEGER CHECK (age 0), created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP ); INSERT INTO students (name, age) VALUES (张三, 20), (李四, 22); SELECT * FROM students ORDER BY id; SELECT version() 应显示 PostgreSQL 12.22。 ## 8. 常用管理命令 以下命令都在项目目录执行 powershell Set-Location D:\docker_install\postgresql12-lab 查看状态 powershell docker compose ps 停止但不删除容器 powershell docker compose stop 重新启动 powershell docker compose start 重启 powershell docker compose restart 停止并删除容器但保留数据库卷 powershell docker compose down 再次创建 powershell docker compose up -d 进入 psql powershell docker compose exec postgres psql -U postgres -d study_db 退出 psql text \q ## 9. 验证数据持久化 先确认 students 表中有数据然后执行 powershell docker compose down docker compose up -d docker compose exec postgres psql -U postgres -d study_db -c SELECT * FROM students ORDER BY id; 重建容器后仍能看到数据说明 postgres_data 持久化卷工作正常。 ## 10. 备份与恢复 ### 10.1 备份 项目的 backup 目录映射为数据库容器中的 /backup powershell docker compose exec postgres pg_dump -U postgres -d study_db -f /backup/study_db.sql Get-Item .\backup\study_db.sql ### 10.2 恢复到当前数据库 恢复前应确认备份文件来源可靠 powershell docker compose exec postgres psql -U postgres -d study_db -f /backup/study_db.sql 如果备份中包含已经存在的对象可能出现“对象已存在”。练习完整恢复时建议新建一个空数据库 powershell docker compose exec postgres createdb -U postgres study_restore docker compose exec postgres psql -U postgres -d study_restore -f /backup/study_db.sql ## 11. pgAdmin 备份工具路径 pgAdmin 容器包含 PostgreSQL 12 的备份工具。如果 pgAdmin 的 Backup/Restore 界面提示找不到工具 1. 打开 File Preferences。 2. 找到 Paths Binary paths。 3. PostgreSQL 12 Binary Path 填写/usr/local/pgsql-12。 4. 保存后重试。 参考[pgAdmin 容器部署文档](https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html)。 ## 12. 修改密码时的重要规则 PostgreSQL 官方镜像的 POSTGRES_PASSWORD 只在数据库卷首次初始化时生效。已有数据卷时只修改 .env 不会修改数据库里的密码。 保留数据并修改数据库密码应在 pgAdmin Query Tool 执行 sql ALTER USER postgres WITH PASSWORD 新的强密码; 然后同步修改 .env。pgAdmin 登录密码同样不会因为修改 .env 自动变化已有 pgAdmin 卷时应在 pgAdmin 用户界面修改。 ## 13. 常见问题排查 ### 13.1 Docker Desktop 提示 WSL 太旧 powershell wsl --update wsl --shutdown 重新启动 Docker Desktop。 ### 13.2 Docker Engine 未运行 先打开 Docker Desktop等待状态正常再执行 powershell docker info 仍失败时查看 Docker Desktop 的 Troubleshoot 页面或重启电脑。 ### 13.3 镜像拉取失败或超时 先检查网络 powershell docker pull hello-world 如果公司网络使用代理在 Docker Desktop Settings Resources/Proxies 中按实际网络配置代理。不要随意添加来源不明的镜像加速地址。 ### 13.4 端口被占用 检查端口 powershell netstat -ano | Select-String :5432\s|:5050\s 如有 TCP 监听可在 compose.yaml 左侧修改 Windows 端口例如 yaml ports: - 127.0.0.1:15432:5432 pgAdmin 也可改成 127.0.0.1:15050:80修改后执行 powershell docker compose up -d ### 13.5 pgAdmin 无法连接数据库 依次检查 powershell docker compose ps docker compose logs --tail100 postgres docker compose exec postgres pg_isready -U postgres -d study_db 确认 pgAdmin 连接主机为 postgres、端口为 5432、用户为 postgres。 ### 13.6 修改 .env 后密码没有变化 这是持久化卷的正常行为参考第 12 节。不要为了修改密码直接删除数据卷。 ## 14. 完全重置学习数据库 **高风险操作下面命令会永久删除 PostgreSQL 数据和 pgAdmin 配置。只有明确不需要现有学习数据时才执行。** 先备份再执行 powershell Set-Location D:\docker_install\postgresql12-lab docker compose down -v docker compose up -d 因为卷已删除新的数据库会重新读取 .env 中的初始化密码。 ## 15. 推荐学习顺序 1. 数据库、Schema、表、行和列的概念。 2. CREATE TABLE 与常用数据类型。 3. INSERT、SELECT、UPDATE、DELETE。 4. WHERE、排序、分页和聚合。 5. 主键、唯一约束、外键和检查约束。 6. 多表 JOIN。 7. 索引与 EXPLAIN。 8. 视图、函数和事务。 9. 用户、角色和权限。 10. pg_dump、恢复及 PostgreSQL 大版本升级概念。 ## 16. 官方资料 - [Docker Desktop Windows 安装](https://docs.docker.com/desktop/setup/install/windows-install/) - [Docker Desktop WSL 2 后端](https://docs.docker.com/desktop/features/wsl/) - [微软 WSL 安装](https://learn.microsoft.com/windows/wsl/install) - [PostgreSQL 官方 Docker 镜像](https://hub.docker.com/_/postgres) - [PostgreSQL 12.22 文档](https://www.postgresql.org/docs/12/) - [PostgreSQL 12.22 发布说明](https://www.postgresql.org/docs/12/release-12-22.html) - [pgAdmin 容器部署](https://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html)
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻