gpt4 book ai didi

Gitlab服务间通信

转载 作者:行者123 更新时间:2023-12-05 05:53:15 26 4
gpt4 key购买 nike

嗨,gitlab 支持服务间通信吗?我发现了一个与之相关的问题Gitlab-CI: Cross-service communication在此有一个指向 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

我正在使用自托管运行器共享运行器。

我只是在尝试简单的连接

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

最佳答案

等待数据库就绪

连接到数据库服务的服务器镜像出现问题的原因是这两个服务同时启动,并且在您的服务尝试连接时数据库可能尚未准备好进行连接。正如评论中所讨论的,添加重试/等待逻辑可以解决此问题。

定制服务不稳定

您的作业中会出现以下 No route to host 错误,因为在您的作业/curl 连接到它之前,您的服务镜像正在退出或无法启动。您需要确保您的服务器继续成功运行以便可以访问。

相互通信的作业配置正确

您的作业配置是正确的,将其替换为图像 strm/helloworld-http 允许通信正常工作这一事实证明了这一点,正如评论中所讨论的那样。这样,所有容器(作业、服务器、数据库)之间的通信就建立起来了。

关于Gitlab服务间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69923462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com