[英].gitlab-ci mysql service in Django
我正在学习使用 Gitlab CI,我正在尝试配置.gitlab-ci 文件以将 CI 运行到我的 Django 项目中。
stages:
- test
variables:
MYSQL_DATABASE: $DB_NAME
MYSQL_USER: $DB_USER
MYSQL_PASSWORD: $DB_PASSWORD
services:
- mysql:8.0
test:
image: alpine:3.13
stage: test
script:
- ...(up the app)...
我正在使用“mysql”作为主机。 参考: https://docs.gitlab.com/ee/ci/services/mysql.html
settings.py
文件中有以下数据库配置:DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': getenv('DB_NAME'),
'USER': getenv('DB_USER'),
'PASSWORD': getenv('DB_PASSWORD'),
'HOST': getenv('DB_HOST'),
'PORT': getenv('DB_PORT'),
'TEST' : {
'NAME' : f"test_{getenv('DB_NAME')}",
}
}
}
当我运行它时,所有安装都成功但在运行测试时出现以下错误:
django.db.utils.OperationalError: (2005, "Unknown MySQL server host 'mysql' (-2)")
如果在 Gitlab 文档中说如果我使用mysql
服务它是我需要配置的主机,为什么会发生这种情况?
如果您使用的是 docker(我想它来自您的 DB_HOST),您的 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_ROOT_PASSWORD
变量,它起作用了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.