【问题标题】:How to add config args to postgres service container in Github Action?如何在 Github Action 中将配置参数添加到 postgres 服务容器?
【发布时间】:2021-04-02 21:21:28
【问题描述】:

我正在使用 Github Actions Service Container 来启动一个 postgres 实例,如下所示:

name: Pull Request

on:
  pull_request:
    branches:
      - main
      - staging

jobs:
  test-and-build:
    runs-on: ubuntu-latest

    services:
      redis:
        image: redis
        ports:
          - 6379:6379
      postgres:
        image: postgres
        env:
          POSTGRES_PASSWORD: postgres
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - 5432:5432

...

这可行,但我想通过禁用 fsync 来加速 postgres 实例,如下所述:https://dev.to/thejessleigh/speed-up-your-postgresql-unit-tests-with-one-weird-trick-364p

当在 docker 容器中本地运行 postgres 时,这会大大加快我的运行速度,我希望在 Github Actions 中做同样的事情,但我正在努力了解如何配置图像。似乎将-c fsync=off 传递到上面的选项块会导致错误:

Exit code 125 returned from process: file name '/usr/bin/docker', arguments 'create --name 04a7236d2e964fccb8a7d95684b3cf05_postgres_0249b3 --label cc4956 --network github_network_3023184aafab424896b4e553d7ad9c38 --network-alias postgres -p 5432:5432 --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 -c fsync=off -e "POSTGRES_PASSWORD=postgres" -e GITHUB_ACTIONS=true -e CI=true postgres'.

有什么想法吗?

【问题讨论】:

    标签: postgresql docker github continuous-integration github-actions


    【解决方案1】:

    目前似乎没有办法将命令注入服务,以便您可以关闭 rsync 功能。 Github 操作使用不支持 -c 属性的 create 命令。

    但是您可以使用与https://github.com/bitnami/bitnami-docker-postgresql 不同的图像,它允许您通过环境变量将其关闭。这是一个例子:

    name: Postgress test
    on:
      push:
    jobs:
      test:
        runs-on: ubuntu-latest
        services:
          postgres:
            image: 'bitnami/postgresql:latest'
            env:
              POSTGRESQL_DATABASE: test_postgress
              POSTGRESQL_USERNAME: test_user
              POSTGRESQL_PASSWORD: test_password
              POSTGRESQL_FSYNC: "off"
            options: >-
              --health-cmd "pg_isready -d test_postgress -U test_user -p 5432"
              --health-interval 10s
              --health-timeout 5s
              --health-retries 5
            ports:
              - 5432:5432
        steps:
          - run: echo test
    

    旁注,这个环境没有记录在他们的自述文件中,但你可以在他们的源代码中找到它 https://github.com/bitnami/bitnami-docker-postgresql/blob/b2b1c1410293fc9a8b58a52b56f2ceabdac59bb1/9.6/debian-10/rootfs/opt/bitnami/scripts/libpostgresql.sh#L433-L445

    【讨论】:

    • 太棒了!这几乎是我运行测试的一半时间,大量的道具,谢谢:)
    • 很高兴听到这个消息?
    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 2019-12-16
    • 1970-01-01
    • 2023-01-24
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    相关资源
    最近更新 更多