PostgreSQL 使用 Github Actions 连接自定义容器镜像中的 Postgres 服务

PostgreSQL 使用 Github Actions 连接自定义容器镜像中的 Postgres 服务

在本文中,我们将介绍如何使用 Github Actions 连接到自定义容器镜像中的 Postgres 服务。我们将使用 Github Actions 作为 CI/CD 工具,使用自定义容器镜像中的 Postgres 服务来进行数据库操作。

阅读更多:PostgreSQL 教程

创建自定义容器镜像

首先,我们需要创建一个包含 Postgres 服务的自定义容器镜像。我们可以使用 Docker 来创建这个镜像。以下是一个示例的 Dockerfile 文件:

FROM postgres:latest

COPY init.sql /docker-entrypoint-initdb.d/

ENV POSTGRES_USER=myuser
ENV POSTGRES_PASSWORD=mypassword
ENV POSTGRES_DB=mydatabase

EXPOSE 5432

在上面的示例中,我们使用 postgres:latest 作为基础镜像,将自定义的初始化 SQL 脚本 init.sql 复制到容器内部,设置了 Postgres 的用户名、密码和数据库名称。最后,我们将容器的 5432 端口暴露出来。

接下来,我们可以使用以下命令来构建并推送镜像到 Docker Hub:

docker build -t your-dockerhub-username/postgres-container .
docker push your-dockerhub-username/postgres-container

配置 Github Actions

完成镜像的构建和推送后,我们可以配置 Github Actions 来连接到自定义容器镜像中的 Postgres 服务。

在项目的根目录下创建一个名为 .github/workflows/postgres.yml 的文件,并将以下代码添加到其中:

name: PostgreSQL CI/CD

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up Docker environment
      uses: docker/setup-docker@v1

    - name: Build and run PostgreSQL container
      run: |
        docker run -d \
          -p 5432:5432 \
          -e POSTGRES_USER=myuser \
          -e POSTGRES_PASSWORD=mypassword \
          -e POSTGRES_DB=mydatabase \
          your-dockerhub-username/postgres-container

    - name: Checkout code and run tests
      run: |
        # 在这里可以使用任何需要连接 Postgres 数据库的命令
        # 例如执行数据库迁移、运行测试等

    - name: Stop and remove PostgreSQL container
      run: docker stop $(docker ps -aq --filter ancestor=your-dockerhub-username/postgres-container)

    - name: Publish to Docker Hub
      uses: docker/build-push-action@v2
      with:
        context: .
        push: true
        tags: your-dockerhub-username/postgres-container:latest

上面的配置文件将以下操作:

  1. 在每次提交到 master 分支时触发工作流程。
  2. 拉取代码仓库。
  3. 设置 Docker 环境。
  4. 构建并运行自定义容器镜像中的 Postgres 服务。
  5. 运行数据库操作,例如数据库迁移、运行测试等。
  6. 停止并删除 Postgres 容器。
  7. 将镜像发布到 Docker Hub。

示例

下面是一个示例,演示如何使用 Github Actions 连接到自定义容器镜像中的 Postgres 服务进行数据库迁移的操作。

假设我们有一个名为 mydatabase 的数据库,其中包含一张名为 users 的表。现在,我们想要添加一个新的列 age 到该表中,并将其默认值设置为 18

首先,在我们的代码仓库中创建一个名为 migration.sql 的文件,并将以下 SQL 语句添加到其中:

ALTER TABLE users
ADD COLUMN age INTEGER DEFAULT 18;

接下来,在 Github Actions 中添加一条新的运行命令,如下所示:

- name: Run database migration
  env:
    POSTGRES_HOST: localhost
    POSTGRES_PORT: 5432
    POSTGRES_USERNAME: myuser
    POSTGRES_PASSWORD: mypassword
    POSTGRES_DATABASE: mydatabase
  run: |
    psql -h POSTGRES_HOST -pPOSTGRES_PORT -U POSTGRES_USERNAME -dPOSTGRES_DATABASE -c "$(cat migration.sql)"

这个命令将连接到自定义容器镜像中的 Postgres 服务,并执行 migration.sql 中的 SQL 语句。

总结

通过使用 Github Actions 连接自定义容器镜像中的 Postgres 服务,我们可以方便地进行数据库操作,例如数据库迁移、运行测试等。借助 Github Actions 的自动化特性,我们可以在代码提交后自动执行这些操作,实现更高效的开发流程。希望本文对您有所帮助!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程