python-3.x - 如何从 Gitlab-CI 中的子 Docker 容器访问 Postgres 服务?如何访问 postgres 服务或 gitlab 共享运行器的 IP 地址?
问题描述
我已经使用如下所示的架构设置了一个 gitlab-ci 构建。
.
侦听器容器无法使用主机名“<em>postgres”与 postgres 容器通信。主机名无法识别。侦听器容器如何与 postgres 数据库实例通信?
文档建议将postgres 实例配置为.gitlab-cy.yml中的服务。.gitlab-ci.yml中定义的 CI 作业能够通过服务名称“ postgres ”连接到 postgres 实例。
tusd、minio和listener容器在 docker-compose 进程中生成,在pytest CI作业中触发。侦听器容器将信息写回 postgres 数据库。
随后,我考虑使用 postgres 服务的 IP 地址代替主机名。在 pytest CI 构建作业中,我尝试使用以下 bash 命令序列确定 postgres 数据库的 IP 地址:
- export DB_IP="$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' postgres)"
- echo "DB IP 地址为 $DB_IP"
但是,postgres 不被识别为容器。
如何确定 postgres 服务的 IP 地址?或者我可以使用共享运行器的 IP 地址吗?我如何确定这一点?
有人有什么想法吗?
更新 11/1/2019 通过将所有服务移动到 docker-compose 文件中解决,以便它们可以相互通信。这包括 postgres 容器等……在测试环境初始化中进行了一些重构之后,现在通过 docker-compose run 命令调用测试。
现在可以使用 gitlab-shared runner 成功运行测试了……</p>
解决方案
推荐阅读
- php - cURL 获取 html 页面结果为空
- mysql - 按月除以日期列表 SQL
- csv - csv 文件使用加载数据到 hive 表 - 如何格式化 csv 中的日期以由 hive 表接受
- r - 将文件从 FTP 导入到 R
- shell - 如何将最新的 TFS 存储库变更集编号设置为 Windows 批处理文件中的变量
- java - FlyWay + Spring Boot 2.x for vendor specific scripts 错误:发现不止一个迁移版本为 1.x
- reactjs - 无法在反应原生的 web 视图中加载视频
- spring-data - Spring 数据接口投影
- matlab - 加载 MAT 文件而不创建中间变量
- reactjs - React 组件不会因为 setInterval 而停止获取数据