Cirrus CI - 无法连接到 MySQL 个附加容器

Cirrus CI - Can't connect to MySQL additional container

我运行在 Cirrus CI 上安装了一个容器,在我的 .cirrus.yml 中,我定义了一个 additional_container 到 运行 MySQL 根据 docs:

进行测试的实例

.cirrus.yml

container:
  image: node:latest
  additional_containers:
    - name: mysql
      image: mysql:8
      port: 3306
      cpu: 1.0
      memory: 512Mi
      env:
        MYSQL_ROOT_PASSWORD: "pa55w0rd"

我正在尝试 运行 在我的一项设置任务中针对该实例执行 CREATE DATABASE 命令:

...

mysql_setup_script:
    - mysql -uroot -ppa55w0rd -P3306 -hlocalhost -e "CREATE DATABASE voluble_test;"
...

我已经在我的测试容器上安装了 MySQL 客户端(但不是服务器,因为这会破坏对象)。但是,MySQL 就像连接到 true 本地主机数据库一样,并寻找本地安装的 MySQL 服务器,它出现了 - 并失败并显示以下内容错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")

也就是说,Cirrus CI docs 声明 MySQL 实例应该在本地主机上可用:

Tests will be able to access MySQL instance via localhost:3306.

我看不出解决这个问题的明显方法 - 有什么建议吗?

使用localhost会导致mysql无法使用网络。

使用 127.0.0.1 或您的 docker 主机 IP,具体取决于网络配置。

注意该错误不是网络错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

"through socket '/var/run/mysqld/mysqld.sock'",该文件未指向 docker 容器内的 mysql 套接字。

获取您的 docker 主机 IP:

$ docker network inspect bridge --format='{{ (index .IPAM.Config 0).Gateway}}'