Python Django中的.gitlab ci mysql服务
我正在学习使用Gitlab CI,并尝试配置.Gitlab CI文件,以便在Django项目中运行CIPython 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/CD->变量),例如:
- 在我的
文件中有以下DB配置:settings.py
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