一名宅。 - 2018年8月
type: channel
link: https://zhaiyiming.com/2018/08/
description: 华山绝顶坐忘经
items: 使用 Docker 配置基于 Nginx 支持的 NextCloud 私有云服务

使用 Docker 配置基于 Nginx 支持的 NextCloud 私有云服务
type: item
date: 2018-08-29T03:59:00+08:00
description: Docker 创建一个网络，将数据库、应用以及NginxDocker 放入同一个网络中。 docker network create --driver bridge --subnet 172.22.4.0/24 nextcloud 接下来，分别启动各个 Docker 的实例，其中Nginx实例需要暴露端口给宿主机器作为最终访问端口，Nginx通过反向代理将请求移交给应用实例处理，应用实例通过内网数据库 Socket 连接请求数据，并返回结果。 docker run -d --restart=always \ --name nextcloud-mariadb \ --network nextcloud \ --hostname nextcloud-mariadb \ -v /data/nextcloud/mariadb:/var/lib/mysql \ -p 10306:3306 \ -e TZ='Asia/Shanghai' \ -e MYSQL_ROOT_PASSWORD=mysuperstrongpassword mariadb docker run -d --restart=always \ --name nextcloud-fpm \ --network nextcloud \ --hostname nextcloud \ --link nextcloud-mariadb:mariadb \ -v /data/nextcloud/html:/var/www/html nextcloud:fpm docker run -d --restart=always \ --name nextcloud-nginx \ --network nextcloud \ --hostname nextcloud-nginx \ --link nextcloud-fpm:nextcloud \ -v /data/nextcloud/html:/var/www/html:ro \ -v /data/nextcloud/nginx-confs/nginx.conf:/etc/nginx/nginx.conf \ -v /data/nextcloud/nginx-confs/conf.d:/etc/nginx/conf.d/ \ -v /root/.acme.sh/*.example.com/*.example.com.cer:/etc/nginx/ssl/cloud.example.com.crt:ro \ -v /root/.acme.sh/*.example.com/*.example.com.key:/etc/nginx/ssl/cloud.example.com.key:ro \ -p 10080:80 -p 10443:443 nginx 当然数据库 Docker 是可选的，数据库完全可以起在第三方服务器上，并通过 Socket 建立连接。 Nginx 配置 /data/nextcloud/nginx-confs/nginx.conf user nginx; worker_processes 16; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; } /data/nextcloud/nginx-confs/nextcloud.conf HTTP ONLY upstream php-handler { server nextcloud:9000; #server unix:/var/run/php5-fpm.sock; } server { listen 80; listen [::]:80; server_name _; fastcgi_rea…