CircleCI 2.0 中的多个 Postgres 数据库

Multiple Posgres databases in CircleCI 2.0

如何让我的 Postgres 映像创建多个数据库?例如,我想做这样的事情:

- image: circleci/postgres:9.6.7-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: db_test
      POSTGRES_DB: db_special

有办法吗?如果没有,我该如何着手创建第二个数据库,其角色与第一个数据库相同?

免责声明:CircleCI 的开发倡导者

我看到了三个选项。

  1. 自己扩展 PostgreSQL Docker 映像,让它默认创建您需要的额外数据库。
  2. 通过您的应用程序(应该只是一个 SQL 行)或使用 PostgreSQL CLI(您需要将其安装在容器中)即时创建其他数据库.
  3. 同时使用两个或多个 PostgreSQL 容器,每个数据库一个。然后您还需要更改其中之一的默认主机名。第一个位于 localhost,第二个位于您设置的名称。

这是#3 的示例:

- image: circleci/my-main-image:latest
- image: circleci/postgres:9.6.7-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: db_test
- image: circleci/postgres:9.6.7-alpine
    name: pg2
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: db_special

只是为了补充第二个选项。

如果您不在 docker 图像 bash 中,但在根 machine/container 中,您也可以 运行:

psql -h localhost -p PORT-U root -d FIRST_DB -c "create database NEW_DB;"

端口:通常为 5432

FIRST_DB:在你的情况下 db_test

NEW_DB:在你的情况下 db_special

同样,这是一个补充,因为通常在 circle ci 上,您 运行 您的命令行来自您的第一个图像而不是来自 Postgres 图像。

如果你看看 https://circleci.com/docs/2.0/postgres-config/

他们有 2 张图片的示例:首先使用 go + postgres 或 java + postgres。