我正在努力,我正在尝试运行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内部不起作用。我的其他服务似乎能够提取全局变量并加以利用
答案 0 :(得分:0)
还有更多挖掘的余地。.我发现mariadb需要一些时间才能启动,并在准备好接受连接之前打开一个TCP端口,这似乎是gitlab的指示器,表明它已经准备就绪,而且还在继续。..然而mariadb尚未准备就绪,因此连接失败。
我现在写了一个无聊的脚本,使它进入睡眠状态5并继续检查连接,阻止CI执行,直到数据库可以访问为止。