我将尝试解释我最近发现的头痛问题是什么。首先,我正在使用 Gitlab CI,因此涉及 docker 和 docker in docker。
CI 的结构基本上是这样的,并且全部运行如下:
- 使用以下方法为 3 个不同的数据库建立 3 个服务
docker-compose up -d
- 服务启动后,使用
docker-compose run test
不同目录中的另一个 docker compose 文件运行测试服务,那里的所有服务都使用同一个网络
以前,整个管道都是使用 docker in docker 运行的,但直到最近,也就是在过去的 3 周里,它坏了,我尝试在本地执行相同的操作,数据库连接正常。但在 CI 中运行时,我得到:
ERROR 2003 (HY000): Can't connect to MySQL server on 'dbtest' (111 "Connection refused")
我正在使用最新的 mariadb docker,我试图覆盖绑定地址来监听所有接口,但没有成功,我仍然收到拒绝连接的消息,我尝试了别名和容器名称,但仍然收到相同的错误。
这是数据库服务的组合文件
version: '2'
volumes:
logs:
driver: local
services:
dbtest:
image: mariadb:latest
container_name: core-dbtest
volumes:
- ./db/schema/:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: <some_pass>
MYSQL_DATABASE: <some_db>
MYSQL_USER: <some_user>
MYSQL_PASSWORD: <some_password>
networks:
- test
networks:
test:
问题:
- 是否无论我如何更改,服务器仍然在本地主机上监听?或者我还可以检查什么其他内容?