docker安装seafile最新版本,报错连不上数据库


#1

安装官方文档使用docker-compose安装seafile8.0.7,启动docker之后,访问seafile 报502错误,后台docker提示数据库连接错误。


日志:waiting for mysql server to be ready: %s (2003, “Can’t connect to MySQL server on ‘db’ ([Errno 111] Connection refused)”)
通过查看安装脚本,seafile安装时数据库密码为随机产生,且数据库中用户和表已经正常创建。进入容器中发现conf配置文件的密码,可以手动连接数据库。但启动seafile时却连接不上数据库。
最终发现是因为容器中这个脚本创建目录链接失败:/etc/my_init.d/01_create_data_links.sh
dirs=(
conf
ccnet
seafile-data
seahub-data
pro-data
seafile-license.txt
)

for d in ${dirs[*]}; do
src=/shared/seafile/$d
if [[ -e $src ]]; then
rm -rf /opt/seafile/$d && ln -sf $src /opt/seafile
fi
done

docker-compose中映射了shared目录:/opt/seafile-data:/shared 原始shared目录为空,所以这个脚本中创建软件连是不成功的。最终导致seafile启动时读取不到配置文件,所以连接数据库失败
处理办法:docker-compose启动容器之后,进入seafile容器,手动拷贝ccnet,conf,logs三个目录到/shared目录,执行docker-compose down ,再重新执行docker-compose up。因为配置了目录映射,所以配置文件会使用shared目录的历史文件,连接数据库正常,seafile访问正常。