ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# Using PostgreSQL > 原文:[https://docs.gitlab.com/ee/ci/services/postgres.html](https://docs.gitlab.com/ee/ci/services/postgres.html) * [Use PostgreSQL with the Docker executor](#use-postgresql-with-the-docker-executor) * [Use PostgreSQL with the Shell executor](#use-postgresql-with-the-shell-executor) * [Example project](#example-project) # Using PostgreSQL[](#using-postgresql "Permalink") 由于许多应用程序都依赖 PostgreSQL 作为其数据库,因此最终需要它才能运行测试. 下面将指导您如何使用 GitLab Runner 的 Docker 和 Shell 执行程序执行此操作. ## Use PostgreSQL with the Docker executor[](#use-postgresql-with-the-docker-executor "Permalink") 如果您将[GitLab Runner](../runners/README.html)与 Docker 执行程序一起使用,则基本上已经完成了所有设置. 首先,在您的`.gitlab-ci.yml`添加: ``` services: - postgres:12.2-alpine variables: POSTGRES_DB: nice_marmot POSTGRES_USER: runner POSTGRES_PASSWORD: "" POSTGRES_HOST_AUTH_METHOD: trust ``` **注意:**不能在 GitLab UI 中设置`POSTGRES_DB` , `POSTGRES_USER` , `POSTGRES_PASSWORD`和`POSTGRES_HOST_AUTH_METHOD`变量. 要设置它们,请将它们分配给[UI 中](../variables/README.html#create-a-custom-variable-in-the-ui)的变量,然后将该变量分配给`.gitlab-ci.yml`的`POSTGRES_DB` , `POSTGRES_USER` , `POSTGRES_PASSWORD`和`POSTGRES_HOST_AUTH_METHOD`变量. 然后将您的应用程序配置为使用数据库,例如: ``` Host: postgres User: runner Password: '' Database: nice_marmot ``` 如果您想知道为什么我们对`Host`使用`postgres` ,请阅读[如何将服务链接到作业的更多信息](../docker/using_docker_images.html#how-services-are-linked-to-the-job) . 您还可以使用[Docker Hub](https://hub.docker.com/_/postgres)上可用的任何其他 Docker 映像. 例如,要使用 PostgreSQL 9.3,服务将变为`postgres:9.3` . `postgres`图像可以接受一些环境变量. 有关更多详细信息,请参阅[Docker Hub](https://hub.docker.com/_/postgres)上的文档. ## Use PostgreSQL with the Shell executor[](#use-postgresql-with-the-shell-executor "Permalink") 您还可以在手动配置的服务器上使用 PostgreSQL,这些服务器将 GitLab Runner 与 Shell 执行程序一起使用. 首先安装 PostgreSQL 服务器: ``` sudo apt-get install -y postgresql postgresql-client libpq-dev ``` 下一步是创建用户,因此登录 PostgreSQL: ``` sudo -u postgres psql -d template1 ``` 然后创建一个将由您的应用程序使用的用户(在我们的示例中为`runner` ). 将以下命令中的`$password`更改`$password`真实的强密码. ***注意:**不要输入`template1=#` ,这是 PostgreSQL 提示的一部分.* ``` template1=# CREATE USER runner WITH PASSWORD '$password' CREATEDB; ``` ***注意:**请注意,我们创建的用户具有创建数据库的特权( `CREATEDB` ). 在以下步骤中,我们将为该用户显式创建一个数据库,但是如果在您的测试框架中有删除和创建数据库的工具,则具有该特权将很有用.* 创建数据库,并授予其上的所有特权用户`runner` : ``` template1=# CREATE DATABASE nice_marmot OWNER runner; ``` 如果一切顺利,您现在可以退出数据库会话: ``` template1=# \q ``` 现在,尝试连接到与用户新创建的数据库`runner`检查一切就绪. ``` psql -U runner -h localhost -d nice_marmot -W ``` ***注意:**我们明确告诉`psql`连接到 localhost 以便使用 md5 身份验证. 如果您省略此步骤,则将被拒绝访问.* 最后,将您的应用程序配置为使用数据库,例如: ``` Host: localhost User: runner Password: $password Database: nice_marmot ``` ## Example project[](#example-project "Permalink") 为了方便起见,我们使用公共可[共享的](../runners/README.html)运行程序在[GitLab.com](https://gitlab.com)上运行了一个[示例 PostgreSQL 项目](https://gitlab.com/gitlab-examples/postgres) . 想要破解吗? 只需对其进行分叉,提交并推送您的更改. 稍后,公共跑步者将选择更改并开始工作.