我爱编程

Docker+NextCloud搭建

2018-06-13  本文已影响0人  努力的Jason

    ​ nextcloud的运行需要一个PHP运行环境和一个数据库作为依赖,服务器可以选传统的apache和nginx,但是apache和nginx配置比较复杂,我没有去仔细看,所以本文中采用一个golang开发的轻量级服务器Caddy,Caddy配置起来很简便,官方介绍甚至可以在28s配置好一个支持http2的server。

    ​ 为了快速搭建nextcloud和服务器的整洁,采用了docker的方式运行。

 一.Docker和docker-compost安装

yum install epel-release 

yum install docker 

service docker start

安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

测试

docker-compose --version

 二.创建独立网络配置caddy文件

docker network create nextcloud

​ 新建一个名为Caddyfile的文件,内容如下

example.com {

  proxy / 233.233.233.233:6666 {

      header_upstream Host {host}

      header_upstream X-Real-IP {remote}

      header_upstream X-Forwarded-Proto {scheme}

  }

  log /var/log/caddy.log

  gzip

}

​ proxy为代理地址和端口

​ log为日志文件地址

​ gzip为压缩方式

​ Candy的好处在于不用花太多时间去配置服务器,不用申请ssl,但是如果有需要还是可以用nginx来代替。

 三.镜像配置

​ 新建一个docker-compose.yml的文件,

version: '2'

services:

#采用mysql数据库作为用户管理

  db:

    container_name: cloud_db

    image: mysql

    volumes:

      - ./data/cloud/mysql:/var/lib/mysql #映射mysql地址

    restart: always

    environment:

      MYSQL_ROOT_PASSWORD: root #mysql的root密码

      MYSQL_DATABASE: nextcloud #数据库名

  app:

    container_name: cloud_app

    depends_on:

      - db

    image: nextcloud

    volumes:

      - ./data/cloud/config:/var/www/html/config #nextcloud的配置文件

      #nextcloud的数据存储,用户上传的文件会直接到这个文件夹下,以用户名分类

      - ./data/cloud/data:/var/www/html/data

      - ./data/cloud/apps:/var/www/html/apps #nextcloud插件的地址

    links:

      - db

    ports:

      - "6666:80" #映射端口

    restart: always

  cron:

    container_name: cloud_cron

    image: nextcloud

    links:

      - db

    volumes_from:

      - app

    user: www-data

    entrypoint: |

      bash -c 'bash -s <

      trap "break;exit" SIGHUP SIGINT SIGTERM

      while /bin/true; do

        /usr/local/bin/php /var/www/html/cron.php

        sleep 900

      done

      EOF'

    restart: always

  web:

    container_name: cloud_web

    image: abiosoft/caddy

    volumes:

      - ./Caddyfile:/etc/Caddyfile #映射candy的配置文件,这个是步骤二中新建的Caddyfile

      - ~/.caddy:/root/.caddy

    ports:

      - 80:80

      - 443:443

    restart: always

networks:

  default:

    external:

      name: nextcloud

文件保存后,用docker-comese开始pull镜像

docker-compose up -d

配置完成后,可以通过    ip:映射端口      地址访问

首次登陆需要设置admin的用户名和密码,还有数据地址和用户名密码。


上一篇下一篇

猜你喜欢

热点阅读