使用docker compose启动postgresql的示例代码
引言
要在启动 PostgreSQL 容器时执行特定的初始化文件,可以使用 Docker 的 docker-entrypoint-initdb.d
目录。这个目录下的 SQL 文件会在容器启动时被自动执行。
下面是如何修改 Docker Compose 配置文件,以便在启动时执行初始化 SQL 脚本:
创建初始化 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');
更新 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 目录下。
启动 PostgreSQL 容器:
运行以下命令启动的 PostgreSQL 容器,并让它执行初始化 SQL 脚本:
docker-compose up -d
PostgreSQL 容器会启动,并自动执行 docker-entrypoint-initdb.d 目录下的 SQL 脚本文件。这样,数据库就会被初始化,表和数据会被创建。
确保 SQL 脚本文件的命名符合 PostgreSQL 的执行顺序要求(通常按字母顺序执行)。这样,就可以在每次启动 PostgreSQL 容器时自动初始化数据库。
到此这篇关于使用docker compose启动postgresql的示例代码的文章就介绍到这了,更多相关docker compose启动postgresql内容请搜索编程客栈(www.lsjlt.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网(www.lsjlt.com)!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341