GitLab CI多Postgres服务:低版本Runner下自定义库名方案咨询
问题解答
可以通过entrypoint或command为每个Postgres服务指定独立的数据库名,具体配置方式如下:
方法1:通过entrypoint设置独立环境变量
利用shell命令先为当前服务设置专属环境变量,再执行Postgres镜像的启动脚本,确保每个服务初始化不同的数据库:
test-e2e: image: gitlab-registry.xx.ru/golang/go:1.18 services: - name: gitlab-registry.xx.ru/docker/postgres:latest alias: db entrypoint: ["sh", "-c", "export POSTGRES_DB=database POSTGRES_USER=database POSTGRES_PASSWORD=database && exec docker-entrypoint.sh postgres"] - name: gitlab-registry.xx.ru/docker/postgres:latest alias: db-1 entrypoint: ["sh", "-c", "export POSTGRES_DB=database-1 POSTGRES_USER=database POSTGRES_PASSWORD=database && exec docker-entrypoint.sh postgres"] - name: gitlab-registry.xx.ru/docker/postgres:latest alias: db-2 entrypoint: ["sh", "-c", "export POSTGRES_DB=database-2 POSTGRES_USER=database POSTGRES_PASSWORD=database && exec docker-entrypoint.sh postgres"]
方法2:通过command传递运行参数
Postgres支持通过命令行参数指定数据库配置,适合调整运行时参数(若需初始化专属数据库,优先推荐方法1):
test-e2e: image: gitlab-registry.xx.ru/golang/go:1.18 services: - name: gitlab-registry.xx.ru/docker/postgres:latest alias: db command: ["postgres", "--dbname=database"] - name: gitlab-registry.xx.ru/docker/postgres:latest alias: db-1 command: ["postgres", "--dbname=database-1"] - name: gitlab-registry.xx.ru/docker/postgres:latest alias: db-2 command: ["postgres", "--dbname=database-2"] variables: POSTGRES_USER: database POSTGRES_PASSWORD: database
注意事项
Postgres官方镜像的docker-entrypoint.sh启动脚本会优先读取环境变量完成数据库初始化,因此方法1能更可靠地实现每个服务独立创建目标数据库。
内容的提问来源于stack exchange,提问作者ConorHolt
相关产品推荐
相关产品推荐

