gitlab-ci运行mariadb服务未设置MYSQL_ROOT_PASSWORD

时间:2019-09-17 13:13:26

标签: docker gitlab mariadb gitlab-ci

我正在努力,我正在尝试运行mariadb服务,这是对Rails应用程序进行gitlab-ci测试的一部分。但是,在测试运行时,例如mariadb不会遵守gitlab-ci中的环境变量。

services:
- name: mariadb

variables:
  # Configure mysql service (https://hub.docker.com/_/mysql/)
  MYSQL_DATABASE: hello_world_test
  MYSQL_ROOT_PASSWORD: mysql

connect:
  image: mariadb
  script:
  - echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb "$MYSQL_DATABASE"

我希望mariadb以root密码启动,但是我得到的只是一个警告,未设置root密码,显然我的CI失败了。

如果我将mariadb更改为mysql,一切正常。如果我手动启动mariab

docker run -e MYSQL_ROOT_PASSWORD=mysql mariadb 一切也很好。就像使用docker-compose一样,为什么它在Gitlab-CI内部不起作用。我的其他服务似乎能够提取全局变量并加以利用

1 个答案:

答案 0 :(得分:0)

还有更多挖掘的余地。.我发现mariadb需要一些时间才能启动,并在准备好接受连接之前打开一个TCP端口,这似乎是gitlab的指示器,表明它已经准备就绪,而且还在继续。..然而mariadb尚未准备就绪,因此连接失败。

我现在写了一个无聊的脚本,使它进入睡眠状态5并继续检查连接,阻止CI执行,直到数据库可以访问为止。