目录

docker系列使用docker-compose启动postgresql

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

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

https://img-blog.csdnimg.cn/img_convert/5ce5e68e322584b3aa8304269fb6a2f7.jpeg#pic_center

  • 推荐: ,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • :全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • :常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • :详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • :提供各种软件服务,承接各种毕业设计,毕业论文等
    • :总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • :总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

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

https://i-blog.csdnimg.cn/direct/b78ff68649894617996a780dfbb065d4.png#pic_center

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

  1. 创建初始化 SQL 脚本文件

    在项目中创建一个 SQL 文件,例如 init.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');
  2. 更新 Docker Compose 配置

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

    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 目录下。

    https://i-blog.csdnimg.cn/direct/0e2bc67621f844a28ba074c72cdb1565.png#pic_center

  3. 启动 PostgreSQL 容器

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

    docker-compose up -d

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

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

觉得有用的话点个赞 👍🏻 呗。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

https://img-blog.csdnimg.cn/img_convert/a08571f736dc04b5bef51cd09e8e3a0a.gif#pic_center