mongodb - GitLab CI:docker 容器无法连接到 MongoDB 服务
问题描述
在 GitLab CI 管道中,我需要将我自己的 C++ 代码从 docker 容器连接到作为服务运行的 MongoDB,但我无法连接。
这是一个显示问题的最小 gitlab-ci.yml 示例:
stages:
- connect1
- connect2
image: docker:latest
variables:
MONGOIMAGE: "mongo:4.2.3-bionic"
MONGO_INITDB_ROOT_USERNAME: "root"
MONGO_INITDB_ROOT_PASSWORD: "geheim"
connect1:
stage: connect1
services:
- name: $MONGOIMAGE
image: mongo
script:
- mongo --host mongo --username $MONGO_INITDB_ROOT_USERNAME --password $MONGO_INITDB_ROOT_PASSWORD --eval "db.help()"
connect2:
stage: connect2
services:
- name: $MONGOIMAGE
script:
- docker run --rm mongo mongo --host mongo --username $MONGO_INITDB_ROOT_USERNAME --password $MONGO_INITDB_ROOT_PASSWORD --eval "db.help()"
connect2的错误信息是找不到主机:
connecting to: mongodb://mongo:27017/?compressors=disabled&gssapiServiceName=mongodb
2020-06-04T16:20:47.614+0000 E QUERY [js] Error: couldn't connect to server mongo:27017, connection attempt failed: HostNotFound: Could not find address for mongo:27017: SocketException: Host not found (authoritative) :
connect@src/mongo/shell/mongo.js:341:17
@(connect):2:6
2020-06-04T16:20:47.615+0000 F - [main] exception: connect failed
2020-06-04T16:20:47.615+0000 E - [main] exiting with code 1
我已经尝试过,--host localhost
但这正在工作。如何实现docker run
以 connect2 开头的容器可以连接到 MongoDB 服务?
解决方案
最后我找到了解决方案:
connect2:
stage: connect2
services:
- name: $MONGOIMAGE
script:
- ping mongo -c 5
- docker run --rm mongo mongo --add-host mongo:`cat /etc/hosts | grep mongo | awk '{print $1}'` --net host --username $MONGO_INITDB_ROOT_USERNAME --password $MONGO_INITDB_ROOT_PASSWORD --eval "db.help()"
推荐阅读
- android - kivy:来自 buildozer 的 apk 在 android 中不起作用
- git - 为什么当新 PR 合并到同一个分支时,BitBucket 会忽略以前的 PR?
- python-2.7 - numpy 和 multiprocessing.process 的奇怪行为
- python - CSV 到 Django 模型以显示管理员
- python - 如何让 python 脚本正常工作以从 .txt 文件中获取输入并返回正数
- python - 导入 URDF 抛出 ros::TimeNotInitializedException
- applescript - 使用applescript获取任意日期的工作日
- svg - Vue组件中的SVG属性stroke-dasharray
- javascript - 通过滚动减少 div 宽度
- design-patterns - 如何在 Kotlin 中的数据类上实现空对象模式?