docker创建postgreSql带多个init的sql

好的!下面是一个完整的可运行项目结构,包含:

  • ✅ docker-compose.yml:启动 PostgreSQL(支持 pgvector)

  • ✅ init-db.sql:创建数据库 myapp

  • ✅ init-schema.sql:在 myapp 中建表并初始化数据

  • ✅ 自动执行顺序正确,无需手动干预


🗂 项目结构

复制代码
your-project/
├── docker-compose.yml
├── init-db.sql
├── init-schema.sql
└── data/                <-- 容器初始化后生成(不要提前创建)

📄 1. docker-compose.yml

复制代码
version: "3.8"

services:
  postgres:
    image: pgvector/pgvector:pg16
    container_name: my-postgres
    environment:
      POSTGRES_PASSWORD: root
    ports:
      - "5432:5432"
    volumes:
      - ./data:/var/lib/postgresql/data
      - ./init-db.sql:/docker-entrypoint-initdb.d/01-init-db.sql
      - ./init-schema.sql:/docker-entrypoint-initdb.d/02-init-schema.sql
    restart: always

📄 2. init-db.sql

复制代码
-- 创建数据库 myapp CREATE DATABASE myapp;

📄 3. init-schema.sql

复制代码
-- 切换到 myapp 数据库
\connect myapp

-- 创建用户表
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  email TEXT UNIQUE NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入测试数据
INSERT INTO users (name, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'bob@example.com');

✅ 启动项目

确保当前目录下没有已有 data/ 文件夹(PostgreSQL 启动时需要创建空数据库)

复制代码
docker-compose down -v     # 清除旧容器和卷(第一次运行推荐)
rm -rf ./data              # 删除旧数据目录,确保执行初始化脚本
docker-compose up -d       # 启动容器

🔎 验证

复制代码
登录数据库检查数据是否已插入:

docker exec -it my-postgres psql -U postgres -d myapp

然后执行:

\d -- 查看表 SELECT * FROM users;
相关推荐
PellyKoo1 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
时早玖沐1 小时前
放弃 QQ 官方机器人:用 SnowLuma + AstrBot 自建 QQ 机器人
docker·开源·agent
阿标在干嘛3 小时前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器
IT19956 小时前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器
wzg20166 小时前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker
Star(up up up)6 小时前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo
Small-Young8 小时前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·spring boot·mysql·postgresql·乐观锁·并发控制
瀚高PG实验室8 小时前
瀚高数据库运行日志(错误日志)查看与分析方法
数据库·postgresql·瀚高数据库
snow@li8 小时前
PostgreSQL:PostgreSQL(PG)全景深度梳理
数据库·postgresql
方便面不加香菜8 小时前
Docker Image-- 镜像命令详解与使用示例
运维·docker·容器