Mar*_*ado 5 postgresql gitlab docker gitlab-ci
我正在尝试使用 GitLab CI PostgreSQL 进行集成测试,但它不起作用。
\n\n这是该阶段的代码:
\n\nintegration_test:\n stage: test\n tags:\n - custom_tag\n services: \n - postgres\n variables: \n POSTGRES_DB: test\n POSTGRES_HOST: postgres\n POSTGRES_USER: postgres\n POSTGRES_PASSWORD: postgres\n POSTGRES_HOST_AUTH_METHOD: trust\n script:\n - docker login -u ${DOCKER_USER} -p ${DOCKER_PASSWORD} ${DOCKER_REGISTRY}\n - docker pull ${DOCKER_IMAGE_CI}\n - export PGPASSWORD=${POSTGRES_PASSWORD}\n - docker run --rm postgres psql -h ${POSTGRES_HOST} -U ${POSTGRES_USER} -d ${POSTGRES_DB} -c "SELECT \'OK\' AS status;" \nRun Code Online (Sandbox Code Playgroud)\n\n它返回这样的错误:
\n\n\n\npsql:错误:无法连接到服务器:无法将主机名“postgres”转换为地址:名称或服务未知\n有人可以帮助我吗?
\n
您的管道看起来像是使用 shell 执行器和 gitlab 服务。
命令docker run --rm postgres <docker command>不会自动连接到 postgres 网络。您可以尝试运行您的 docker 映像--link postgres,更多详细信息请参见此处。请注意,该链接是旧功能,将来可能会被删除。
就我个人而言,我会尝试使用 docker 镜像运行我的管道作业。如果您的图像不公开可见,那么您可以使用以下方法绕过它DOCKER_AUTH_CONFIG
如果您使用带有密码保护图像的docker runner ,那么 yaml 将如下所示:
integration_test:
image: ${DOCKER_IMAGE_CI}
stage: test
tags:
- custom_tag
services:
- postgres
variables:
POSTGRES_DB: test
POSTGRES_HOST: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_HOST_AUTH_METHOD: trust
script:
- PGPASSWORD=${POSTGRES_PASSWORD} psql -h ${POSTGRES_HOST} -U ${POSTGRES_USER} -d ${POSTGRES_DB} -c "SELECT 'OK' AS status;"
Run Code Online (Sandbox Code Playgroud)
DOCKER_AUTH_CONFIG环境变量如下(gitlab docs):
{
"auths": {
"${DOCKER_REGISTRY}": {
"auth": "(Base64 content from ${DOCKER_USER}:${DOCKER_PASSWORD})"
}
}
}
Run Code Online (Sandbox Code Playgroud)
要生成 base64 身份验证,您可以使用echo -n "${DOCKER_USER}:${DOCKER_PASSWORD}" | base64
| 归档时间: |
|
| 查看次数: |
3768 次 |
| 最近记录: |