PostgreSQL 在 Docker Compose 中初始化 Postgres 数据库

PostgreSQL 在 Docker Compose 中初始化 Postgres 数据库

在本文中,我们将介绍如何在 Docker Compose 中初始化 PostgreSQL 数据库。Docker Compose 是一个用于定义和管理多个 Docker 容器的工具,它可以让我们方便地将多个容器组合在一起,以创建一个完整的应用程序环境。

阅读更多:PostgreSQL 教程

什么是 Docker Compose?

Docker Compose 是 Docker 官方提供的一个定义和管理多个容器的工具。它使用 YAML 文件来配置应用程序的服务、网络和卷等方面的信息。通过 Docker Compose,我们可以轻松地创建并管理复杂的应用程序架构,包括数据库、Web 服务器等。

在 Docker Compose 中使用 PostgreSQL

在 Docker Compose 中使用 PostgreSQL 非常简单。我们首先需要创建一个 docker-compose.yml 文件,用于定义我们的应用程序服务。

version: '3'
services:
  db:
    image: postgres
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
    volumes:
      - ./data:/var/lib/postgresql/data
YAML

在上面的示例中,我们创建了一个名为 db 的服务。它使用了 postgres 镜像作为基础镜像,这是一个官方提供的 PostgreSQL 镜像。我们还通过 environment 指定了要创建的数据库名称、用户名和密码。最后,我们将容器的数据目录挂载到宿主机的 ./data 目录下。

接下来,我们可以使用以下命令来启动我们的 PostgreSQL 服务:

docker-compose up -d
SQL

这个命令将会在后台启动我们的服务,-d 参数表示在后台运行。你可以通过以下命令来查看容器是否正常运行:

docker-compose ps
SQL

如果一切正常,你将会看到 db 容器的状态为 Up

初始化数据库

在 PostgreSQL 中,我们可以使用 SQL 脚本来初始化数据库的结构和数据。在 Docker Compose 中,我们可以通过挂载 SQL 脚本文件到容器内的 /docker-entrypoint-initdb.d 目录来实现自动初始化。

我们可以将初始化脚本文件命名为 init.sql,并将其放置在与 docker-compose.yml 文件相同的目录下。以下是一个示例的初始化脚本:

-- 创建一个名为 `users` 的表
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL
);

-- 插入一些示例数据
INSERT INTO users (name, age) VALUES
  ('Alice', 25),
  ('Bob', 30),
  ('Charlie', 35);
SQL

将上述的示例脚本文件 init.sql 放置在与 docker-compose.yml 文件相同的目录下后,重新启动我们的容器:

docker-compose up -d
SQL

在容器启动后,它将会自动执行 init.sql 脚本,并在数据库中创建 users 表,并插入一些示例数据。

连接到数据库

一旦我们的容器已经启动并且数据库已经初始化完成,我们就可以通过连接字符串来连接到数据库了。以下是一个连接到 PostgreSQL 数据库的 Python 示例代码:

import psycopg2

conn = psycopg2.connect(
    host="localhost",
    database="mydb",
    user="myuser",
    password="mypassword"
)

cur = conn.cursor()

# 查询示例数据
cur.execute("SELECT * FROM users")
rows = cur.fetchall()

for row in rows:
    print(row)

cur.close()
conn.close()
Python

在上面的示例中,我们使用 psycopg2 包来连接到 PostgreSQL 数据库,并执行一条查询语句。我们可以通过适当修改连接字符串中的主机、数据库名、用户名和密码来连接到我们的 PostgreSQL 服务。

总结

在本文中,我们学习了如何在 Docker Compose 中初始化 PostgreSQL 数据库。通过创建一个 docker-compose.yml 文件,我们可以使用官方的 postgres 镜像来启动 PostgreSQL 服务,并通过挂载一个初始化脚本文件来自动初始化数据库的结构和数据。接下来,我们可以使用适当的连接字符串来连接到数据库,并执行我们需要的操作。

希望本文能够帮助你在 Docker Compose 中轻松地使用和初始化 PostgreSQL 数据库!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册