Gitlab服务间通信
Gitlab interservice communication
嗨,gitlab 支持服务间通信吗?我发现了一个与之相关的问题 in this there is a link to gitlab issue https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1042。问题似乎已关闭,所以我认为应该会有支持。
我有一张图片,其中 运行 我的服务器需要连接到数据库。在 CI 中,我将服务器映像和 postgres 映像设置为服务。但是服务器无法连接到 postgres 服务。我得到
psycopg2.OperationalError: could not translate host name "[MASKED]" to address: Name or service not known
我能够彻底连接到数据库 CI。但无法通过我的服务器连接到数据库。 IE。无法从一项服务连接到另一项服务。
task1:
stage: Test
services:
- name: postgres:latest
alias: postgres
- name: serverImage
alias: server
variables:
FF_NETWORK_PER_BUILD: "true"
POSTGRES_DB: testdb
POSTGRES_USER: testuser
POSTGRES_PASSWORD: ""
POSTGRES_HOST_AUTH_METHOD: trust
script:
- curl -i http://server:3000
我正在使用自托管 运行ner 共享 运行ners。
我只是在尝试简单的连接
from sqlalchemy import *
url = 'postgresql://testuser:@postgres:5432/testdb'
engine = create_engine(url)
with engine.connect() as conn:
pass
当我在连接之前添加 sleep 时,错误日志消失了,但现在当我使用 curl 发送请求时,我收到另一个错误:
curl: (7) Failed to connect to server port 4000: No route to host
等待数据库就绪
连接到数据库服务的服务器映像出现问题的原因是这两个服务同时启动,并且在您的服务尝试连接时数据库可能尚未准备好进行连接。正如评论中所讨论的,添加 retry/wait 逻辑可以解决此问题。
自定义服务不稳定
您的作业中会出现以下 No route to host
错误,因为您的服务映像在您的作业/curl
连接到它之前正在退出或无法启动。您需要确保您的服务器继续 运行 成功才能访问。
相互通信的作业配置正确
您的作业配置是正确的,正如评论中所讨论的那样,用图像 strm/helloworld-http
替换它可以使通信正常工作这一事实证明了这一点。这样,所有容器(作业、服务器、数据库)之间的通信就建立起来了。
嗨,gitlab 支持服务间通信吗?我发现了一个与之相关的问题
我有一张图片,其中 运行 我的服务器需要连接到数据库。在 CI 中,我将服务器映像和 postgres 映像设置为服务。但是服务器无法连接到 postgres 服务。我得到
psycopg2.OperationalError: could not translate host name "[MASKED]" to address: Name or service not known
我能够彻底连接到数据库 CI。但无法通过我的服务器连接到数据库。 IE。无法从一项服务连接到另一项服务。
task1:
stage: Test
services:
- name: postgres:latest
alias: postgres
- name: serverImage
alias: server
variables:
FF_NETWORK_PER_BUILD: "true"
POSTGRES_DB: testdb
POSTGRES_USER: testuser
POSTGRES_PASSWORD: ""
POSTGRES_HOST_AUTH_METHOD: trust
script:
- curl -i http://server:3000
我正在使用自托管 运行ner 共享 运行ners。
我只是在尝试简单的连接
from sqlalchemy import *
url = 'postgresql://testuser:@postgres:5432/testdb'
engine = create_engine(url)
with engine.connect() as conn:
pass
当我在连接之前添加 sleep 时,错误日志消失了,但现在当我使用 curl 发送请求时,我收到另一个错误:
curl: (7) Failed to connect to server port 4000: No route to host
等待数据库就绪
连接到数据库服务的服务器映像出现问题的原因是这两个服务同时启动,并且在您的服务尝试连接时数据库可能尚未准备好进行连接。正如评论中所讨论的,添加 retry/wait 逻辑可以解决此问题。
自定义服务不稳定
您的作业中会出现以下 No route to host
错误,因为您的服务映像在您的作业/curl
连接到它之前正在退出或无法启动。您需要确保您的服务器继续 运行 成功才能访问。
相互通信的作业配置正确
您的作业配置是正确的,正如评论中所讨论的那样,用图像 strm/helloworld-http
替换它可以使通信正常工作这一事实证明了这一点。这样,所有容器(作业、服务器、数据库)之间的通信就建立起来了。