Python Django中的.gitlab ci mysql服务

Python Django中的.gitlab ci mysql服务,python,mysql,django,gitlab-ci,Python,Mysql,Django,Gitlab Ci,我正在学习使用Gitlab CI,并尝试配置.Gitlab CI文件,以便在Django项目中运行CI 我有以下.gitlab ci文件: 我已经在gitlab中配置了环境变量(设置->CI/CD->变量),例如: 我使用“mysql”作为主机。参考: 在我的settings.py文件中有以下DB配置: 当我运行此测试时,所有安装都成功,但在运行测试时,我出现以下错误: django.db.utils.OperationalError: (2005, "Unknown M

我正在学习使用Gitlab CI,并尝试配置.Gitlab CI文件,以便在Django项目中运行CI

  • 我有以下.gitlab ci文件:
  • 我已经在gitlab中配置了环境变量(设置->CI/CD->变量),例如:

我使用“mysql”作为主机。参考:

  • 在我的
    settings.py
    文件中有以下DB配置:
当我运行此测试时,所有安装都成功,但在运行测试时,我出现以下错误:

django.db.utils.OperationalError: (2005, "Unknown MySQL server host 'mysql' (-2)")

如果Gitlab文档中说如果我使用
mysql
服务,它就是我需要配置的主机,那么为什么会发生这种情况呢?

如果您使用的是docker(我想它来自您的DB_主机),那么您的mysql服务称为mysql吗?从您粘贴的错误来看,django容器(或django所在的任何地方)似乎无法解析主机名“mysql”。如果您在docker之外,可能必须在hosts文件中配置mysql主机名。

这是我的错误。我阅读了日志——尽管它们内容广泛——我发现了以下几行:

2021-04-11T00:04:33.635793560Z     You need to specify one of the following:
2021-04-11T00:04:33.635798376Z     - MYSQL_ROOT_PASSWORD
2021-04-11T00:04:33.635802359Z     - MYSQL_ALLOW_EMPTY_PASSWORD
2021-04-11T00:04:33.635805957Z     - MYSQL_RANDOM_ROOT_PASSWORD
当然,有必要使用MySQL根密码预定义变量,否则服务无法运行

我们至少需要以下一个变量来运行服务:

- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
我在变量部分更改了gitlab ci文件,并通过以下方式更改了指令:

variables:
    MYSQL_DATABASE: $DB_NAME
    MYSQL_USER: $DB_USER
    MYSQL_PASSWORD: $DB_PASSWORD
    MYSQL_HOST: $DB_HOST
    MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD

然后我导出了CI/CD配置(设置->CI/CD->变量)中的
DB\u ROOT\u密码
变量,它成功了。

是的。Gitlab的文档说明了这一点。例如,当您有一个名为mysql的服务时,它必须使用主机
mysql
解析,但它不工作。听起来像
mysql
在您的/etc/hosts文件中没有DNS记录或条目。尝试使用您认为的mysql服务器的IP地址。感谢您的帮助@RedCricket,这是我的错。我已经用这个问题回答了这个问题。
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
variables:
    MYSQL_DATABASE: $DB_NAME
    MYSQL_USER: $DB_USER
    MYSQL_PASSWORD: $DB_PASSWORD
    MYSQL_HOST: $DB_HOST
    MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD