前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【docker系列】使用docker compose启动postgresql

【docker系列】使用docker compose启动postgresql

原创
作者头像
kwan的解忧杂货铺
发布2024-10-15 18:39:17
1340
发布2024-10-15 18:39:17

要在启动 PostgreSQL 容器时执行特定的初始化文件,可以使用 Docker 的 docker-entrypoint-initdb.d 目录。这个目录下的 SQL 文件会在容器启动时被自动执行。

下面是如何修改 Docker Compose 配置文件,以便在启动时执行初始化 SQL 脚本:

创建初始化 SQL 脚本文件

在项目中创建一个 SQL 文件,例如 init.sql,并将需要执行的 SQL 命令写入其中。确保这个 SQL 文件包含需要的数据库结构和数据。

代码语言:sql
复制
-- init.sql
CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(100) NOT NULL
);

INSERT INTO users (username, password) VALUES ('admin', 'admin123');

更新 Docker Compose 配置

docker-compose.yml 文件中,添加 volumes 配置,将包含初始化 SQL 脚本的目录映射到 PostgreSQL 容器的 docker-entrypoint-initdb.d 目录。

代码语言:yaml
复制
version: "3.8"

services:
  postgresql:
    container_name: postgresql
    image: 172.18.x.xxx:5000/postgres:15-alpine
    restart: always
    environment:
      POSTGRES_PASSWORD: dify
      POSTGRES_DB: dify
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - ./volumes/db/test/data:/var/lib/postgresql/data
      - ./init-scripts:/docker-entrypoint-initdb.d
    ports:
      - "5432:5432"
    networks:
      - ssrf_proxy_network

networks:
  ssrf_proxy_network:
    driver: bridge
    internal: true

在上面的配置中,我添加了一个 volumes 条目 - ./init-scripts:/docker-entrypoint-initdb.d,这将把本地目录 ./init-scripts 映射到 PostgreSQL 容器的 docker-entrypoint-initdb.d 目录下。

启动 PostgreSQL 容器

运行以下命令启动的 PostgreSQL 容器,并让它执行初始化 SQL 脚本:

代码语言:bash
复制
docker-compose up -d

PostgreSQL 容器会启动,并自动执行 docker-entrypoint-initdb.d 目录下的 SQL 脚本文件。这样,数据库就会被初始化,表和数据会被创建。

确保 SQL 脚本文件的命名符合 PostgreSQL 的执行顺序要求(通常按字母顺序执行)。这样,就可以在每次启动 PostgreSQL 容器时自动初始化数据库。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档