一、环境准备
主机:centos7.8
工具:docker和docker-compose
二、容器mysql数据库
1、规划空间创建mysql目录。我这里直接在/下创建了
mkdir /mysql
2、mysql目录下创建一个docker-compose.yml
version: "3"
services:
mysql:
image: mysql:5.7 # 使用 mysql5.7 版本的镜像
container_name: mysql # 容器名称
restart: always # 自动重启策略
ports:
- 3306:3306 # 映射到宿主机的端口
volumes:
- ./conf.d:/etc/mysql/conf.d # 配置文件挂载的宿主机目录
- ./data:/var/lib/mysql # 数据文件挂载的宿主机目录
environment:
- MYSQL_ROOT_PASSWORD=123456 # 初始的 root 用户的密码
3、当前目录下执行
docker-compose up --build -d
三、容器seafile
1、规划空间创建seafile目录。我这里直接在/下创建了
mkdir /seafile
2、seafile目录下创建一个docker-compose.yml
version: '2.0'
services:
memcached:
image: memcached:1.5.6
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:latest
container_name: seafile
ports:
- "9090:80"
# - "443:443" # If https is enabled, cancel the comment.
volumes:
- ./data:/shared # Requested, specifies the path to Seafile data persistent store.
environment:
- DB_HOST=10.0.0.100
- DB_ROOT_PASSWD=123456 # Requested, the value shuold be root's password of MySQL service.
# - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
- SEAFILE_ADMIN_EMAIL=root # Specifies Seafile admin user, default is 'me@example.com'.
- SEAFILE_ADMIN_PASSWORD=123456 # Specifies Seafile admin password, default is 'asecret'.
- SEAFILE_SERVER_LETSENCRYPT=false # Whether use letsencrypt to generate cert.
- SEAFILE_SERVER_HOSTNAME=seafile.ldy.cn # Specifies your host name.
depends_on:
- memcached
networks:
- seafile-net
networks:
seafile-net:
到时候它会自动创建有关seafile的用户和数据库。
3、当前目录下执行
docker-compose up -d
需要等待几分钟,等容器首次启动时的初始化操作完成后。刚开始可能会报502错误。
发现当前目录下自动创建了data目录。并且seafile容器就已经启动了。
四、排错
1、502报错
docker logs seafile
查看日志,发现是数据库连接的问题。
发现自己的docker-compose.yml文件里面没有填写错误,可能就是数据库root禁止所有其他ip登录。
修改root登录的权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
show grants for root; #查看root权限
SELECT * FROM mysql.user\G; #查看用户
show grants for seafile@"%.%.%.%"; #查看seafile用户权限
然后将重启mysql容器,我们做了持久化,所以重新建立也没事。
发现seafile就搭建成功。
2、上传文件失败
由于我们在docker-compose.yml文件中设置的server-hostname是一个域名,我这里没有DNS解析,所以上传不成功。
然后我设置为ip即可