docker部署seafile踩坑日记
本文基于seafile 10.0.1版本实现
1. 前言
目前seafile官方docker部署方式存在以下问题:
不能指定mysql端口
不能使用mysql8数据库
如果想用mysql8数据库,需要修改用户的密码验证插件,但我又不想修改root用户的密码验证插件,那么就需要单独指定seafile的root用户,给这个root用户使用旧版密码验证插件,由此又引来另一个问题:
不能指定root用户名
默认http只能用80端口访问,修改docker端口映射后无法访问
2. 配置文件修改
具体修改的地方说明:
修改bootstrap.py,增加mysql端口配置,增加root用户配置,修改seafile用户域名(从%.%.%.%修改成%)
修改utils.py,增加读取mysql端口和root用户名配置
修改setup-seafile-mysql.py,root用户名和mysql端口从配置获取
修改seafile.nginx.conf.template,在location /配置下修改proxy_set_header Host $host[:12345],后面的端口改为你实际映射的端口,如果是通过nginx反向代理访问,需要改成nginx代理的端口
先把配置文件复制出来
然后按照图示修改各配置文件,左边为修改前,右边为修改后
setup-seafile-mysql.py







bootstrap.py:

utils.py:

seafile.nginx.conf.template

3. 创建自定义镜像
4. 修改docker-compose文件
首先需要创建一个docker网络,用于容器间的相互访问,并且让mysql容器也加入到这个网络
然后编辑seafile的docker-compose文件
5. 创建数据库用户
6. 启动seafile
启动seafile容器时,后台会自动创建用户名为seafile的数据库用户,然后用这个用户进行数据库操作
由于这个新创建的用户的密码验证插件也没修改,会导致后续的数据库操作发生异常,所以需要再手动修改这个用户的密码验证插件,然后再重启seafile,就可以正常使用了
启动seafile,然后通过日志看一下刚刚创建的seafile用户的密码
如果上面的配置文件修改正常,可以在这个地方看到seafile用户的密码,红框框住的部分,被我打了码

然后进数据库,修改seafile用户的密码验证插件
最后,重启seafile,可以正常使用了

