使用docker部署nextcloud并连接到宿主机的mysql数据库
nextcloud,很著名的网盘程序,由于完全配置好过于复杂(这里指不出现那一堆警告信息),所以用docker来部署显得十分方便
环境:Ubuntu 18.04
安装docker
直接根据官方的教程
1 | apt-get install apt-transport-https ca-certificate curl software-properties-common |
安装nextcloud
拉取镜像
1 | docker pull nextcloud |
配置docker-compose
用它可以方便的管理各个镜像和容器,执行apt install docker-compose
进行安装
新建目录nextcloud
,在里面新建配置文件docker-compose.yml
内容如下
1 | version: '2' |
然后在目录内执行docker-compose up -d
配置nginx反向代理
这样就能用域名访问,并且开启https支持
1 | location / { |
连接宿主机数据库
因为容器内和外部是完全隔离的,所以要连接外部数据库要折腾一下,或者不想折腾就用sqlite
,这里我也是查了很多资料才搞清楚
查看docker0虚拟网卡的ip
执行ifconfig
,找到docker0网卡,大概像这样
1 | docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 |
其中的172.17.0.1
就是容器内与外部通信的地址,记下它
配置mysql
- 修改mysql配置文件
/etc/my.cnf
,确保[mysqld]
字段有配置bind-address = 0.0.0.0
,这是为了让mysql监听机器绑定的所有ip,因为默认只会监听127.0.0.1
,但这样做同时也意味着mysql服务可以从外网被访问,所以为了安全最好配置好防火墙 - 登录mysql,执行
CREATE USER 'nextcloud'@'%' IDENTIFIED BY 'password';
新建用户,用户名和密码都可自定义,但要与下文的配置保持一致,主机名用通配符%
表示允许任意主机进行登录 - 新建数据库
CREATE DATABASE nextcloud;
- 授予权限,
GRANT ALL ON nextcloud.* TO 'nextcloud'@'%';
,这里授予了用户nextcloud对数据库nextcloud的所有权限
最后在nextcloud的向导页面用前面查到的地址以及新建的用户名即可成功连接
使用docker部署nextcloud并连接到宿主机的mysql数据库