搭建 docker 环境并用 docker 部署 nextcloud 网盘

系统环境为 CentOS 7.4,默认用户为 root

安装 docker 和 docker-compose

安装 docker

$ yum install docker-io -y
$ docker -v // 查看版本
$ systemctl start docker // 启动 docker
$ systemctl enable docker // 设置开机自启动
$ docker info // 如果已经启动 docker,会输出全局信息

设置镜像源,因为我是腾讯云服务器,所以选了腾讯云提供的源

$ echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
$ systemctl daemon-reload
$ service docker restart

现在就可使用 docker 了

$ docker search mysql
$ docker pull 镜像
$ docker images // 已安装镜像
$ docker ps -a // 已启动容器

安装 docker-compose

$ yum -y install epel-release
$ yum -y install python-pip
$ pip install --upgrade --force-reinstall pip==9.0.3 // 这里如果升级最新的,比如 10.0 以上的,下面安装 docker-compose 会报错
$ pip install docker-compose
$ docker-compose --version

部署 nextcloud

准备

  • 需要镜像: wonderfall/nextcloudmariadb:10
  • 主机需要安装 nginx

开始

$ cd ~
$ docker pull wonderfall/nextcloud
$ docker pull mariadb:10
$ vi docker-compose.yml

粘贴以下内容

nextcloud:
  image: wonderfall/nextcloud
  container_name: nextcloud_web
  links:
    - nextcloud-db:nextcloud-db
  environment:
    - UID=1000
    - GID=1000
    - UPLOAD_MAX_SIZE=5G
    - APC_SHM_SIZE=128M
    - OPCACHE_MEM_SIZE=128
    - CRON_PERIOD=15m
    - TZ=Aisa/Shanghai
    - ADMIN_USER=登录账号
    - ADMIN_PASSWORD=登录密码
    - DOMAIN=localhost
    - DB_TYPE=mysql
    - DB_NAME=nextcloud
    - DB_USER=nextcloud
    - DB_PASSWORD=数据库 nextcloud 账号密码
    - DB_HOST=nextcloud-db
  volumes:
    # 文件会放在宿主机的 `/docker/nextcloud` 目录,如果不存在会自动创建
    - /docker/nextcloud/data:/data
    - /docker/nextcloud/config:/config
    - /docker/nextcloud/apps:/apps2
    - /docker/nextcloud/themes:/nextcloud/themes
  expose:
    - 8888
  ports:
    # 宿主机端口:镜像端口
    - 8888:8888/tcp
  restart: always

nextcloud-db:
  image: mariadb:10
  container_name: nextcloud_db
  volumes:
    # 数据库文件会放在宿主机的 `/docker/nextcloud/db` 目录,如果不存在会自动创建
    - /docker/nextcloud/db:/var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=数据库 root 密码
    - MYSQL_DATABASE=nextcloud
    - MYSQL_USER=nextcloud
    - MYSQL_PASSWORD=数据库 nextcloud 账号密码
  restart: always

编辑完后保存退出,在 docker-compose.yml 同级目录执行:

$ docker-compose up -d
Creating nextcloud_db ... done
Creating nextcloud_web ... done

这里要注意一下,相应容器启动后还有一段配置时间,大概几分钟到十几分钟不等。我刚开始弄的时候,起完容器就去看网页能否打开,结果打不开,以为是打开的方式不对,直到后面看了一下日志才发现需要等…

$ docker ps -a // 可以看到容器已经起来
$ docker logs nextcloud_db // 查看数据库配置是否完成
$ docker logs nextcloud_web // 查看 nextcloud 是否配置完成

这里推荐安装 httpie 工具,方便测试 http,如果 nextcloud 服务正常的话,应该会输出一个 login 页

$ yum install httpie
$ http localhost:8888

现在 nextcloud 网盘就搭建好了,通过 ip:8888 就可以访问网盘页面了,下一步添加域名解析

添加域名

到 DNS 解析那添加一条二级域名,比如我用 pan,解析值填服务器 IP

回到服务器上

$ cd /etc/nginx/conf.d
$ vi pan.wangriyu.wang.conf

添加主机设置

server {
    server_name  pan.wangriyu.wang;

    # https 设置,可以不写
    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/wangriyu.wang/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/wangriyu.wang/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains" always;

    # 限制客户端最大上传大小
    client_max_body_size 5G;

    # 反向代理
    location / {
      proxy_redirect off;
      proxy_pass http://127.0.0.1:8888;
      proxy_set_header Host $http_host;
    }
    location = /.htaccess {
        return 404;
    }
}

server {
    # 非加密连接重定向到 https 上
    if ($host = pan.wangriyu.wang) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen   80;
    server_name  pan.wangriyu.wang;
    return 404; # managed by Certbot
}

编辑完保存退出,重载 nginx

$ nginx -s reload

此时我们就可以访问 https://pan.wangriyu.wang 了,nextcloud 还有客户端,好好享受你的个人网盘吧

文章目录
  1. 安装 docker 和 docker-compose
    1. 安装 docker
    2. 安装 docker-compose
  2. 部署 nextcloud
    1. 准备
    2. 开始
    3. 添加域名