Apple Silicone(M1)下Docker部署Jira出现数据库配置写入500错误如何解决
问题排查与解决步骤
一、优先修正docker-compose配置错误
你当前的配置文件存在语法错误,jira服务的镜像声明缺失image关键字,会导致容器启动时参数加载异常,先修正这行内容:
services: jira: image: dchevell/jira-software-arm64 # 原配置缺了image: 前缀,补上即可 # 其余原有配置保持不变
修正后先执行docker-compose down -v清理旧的错误启动产生的挂载卷,再重新启动测试,如果问题依旧,继续往下排查。
二、检测Jira容器与数据库的连通性
- 先确认两个容器都处于正常运行状态:执行
docker ps,确认jirasoftwarevomeugen和postgres容器的状态均为Up - 进入Jira容器内部执行连通性检测:
容器内依次执行以下命令:docker exec -it jirasoftwarevomeugen /bin/bash- 检测网络连通性:
ping db,如果能正常收到响应说明Docker内部DNS解析正常,两个容器之间没有网络隔离问题 - 检测端口连通性:如果容器内置telnet就执行
telnet db 5432,没有的话执行nc -zv db 5432,返回succeeded说明数据库端口可正常访问 - 直接测试数据库登录:如果容器内置psql客户端,执行
psql -h db -U jira -d jiradb,输入密码jellyfish,如果能正常进入数据库命令行,说明数据库账号、密码、权限均正常,连通性完全没问题。
- 检测网络连通性:
三、解决"Error writing database configuration file" 500错误
该错误大概率和连通性无关,是Jira容器挂载卷权限、配置参数异常导致的:
- 检查挂载卷权限:Jira默认用uid为1000的jira用户运行,挂载的jiradata卷如果权限不符合会导致无法写入配置文件,执行以下命令修改权限:
docker exec -it --user root jirasoftwarevomeugen chown -R jira:jira /var/atlassian/jira - 修正环境变量格式:你当前配置的
JIRA_DATABASE_URL没有补全密码字段,修改为:JIRA_DATABASE_URL=postgresql://jira:jellyfish@db/jiradb - 数据库版本兼容问题:Postgres 14+版本和部分旧Jira镜像不兼容,你可以把db服务的镜像指定为arm64兼容的旧稳定版:
image: postgres:13-alpine - 清空旧卷重启:如果之前错误启动的实例在卷内残留了异常配置文件,执行
docker-compose down -v删除所有关联卷,再重新执行docker-compose up -d启动即可。
内容的提问来源于stack exchange,提问作者ivpiter
相关产品推荐
相关产品推荐

