1. 安装 Docker 与 Compose
一贯的风格首先安装 Docker:
curl -sSL https://get.docker.com/ | sh
然后安装 Compose:
curl -L https://github.com/docker/compose/releases/download/1.10.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
这样我们的基本工具就搞定了。
1.1. 配置 Docker 镜像源
接下来我们会拉取几个镜像,默认的镜像仓库在海外,速度不理想,所以我们使用国内的镜像源,这里以中科大的为例:
首先编辑文件 /etc/docker/daemon.json,在该配置文件中加入下面内容(没有该文件的话建一个):
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
保存之后最好重启一下 Docker 服务,这样就可以使用国内镜像源拉取镜像了。
1.2. 部署 NextCloud
首先为Nextcloud建立一个独立的容器网络:
docker network create nextcloud
接下来新建一个文件夹,名字随便,这里演示为cloud,然后在文件夹里面新建一个文件,文件名为Caddyfile,文件内容如下:
example.com {
proxy / 233.233.233.233:2333 {
proxy_header Host {host}
proxy_header X-Real-IP {remote}
proxy_header X-Forwarded-Proto {scheme}
} log /var/log/caddy.log
gzip
}
因为使用Caddy部署应用不需要花费诸位太多时间去配置Web服务器环境,所以我这里使用Caddy,实际上如果你喜欢Nginx,自己修改下面的配置就好了。Caddy适合不想写配置或者懒得动手申请SSL的读者。
接下来再新建一个文件,名为docker-compose.yml,文件的内容如下:
version: '2'
services:
db:
container_name: cloud_db
image: mysql
volumes:
- "./data/cloud/mysql:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: 这里填写你的密码
MYSQL_DATABASE: nextcloud
app:
container_name: cloud_app
depends_on:
- db
image: nextcloud
volumes:
- ./data/cloud/config:/var/www/html/config
- ./data/cloud/data:/var/www/html/data
- ./data/cloud/apps:/var/www/html/apps
links:
- db
ports:
- "2333:80"
restart: always
cron:
container_name: cloud_cron
image: nextcloud
links:
- db
volumes_from:
- app
user: www-data
entrypoint: |
bash -c 'bash -s <<EOF
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
- ~/.caddy:/root/.caddy
ports:
- 80:80
- 443:443
restart: always
networks:
default:
external:
name: nextcloud
保存文件之后,一句话启动它~~
docker-compose up -d
上面文件内容只有那个密码是需要你改的,其他不变即可。
稍微去喝杯茶,一会回来你就可以看到Nextcloud部署成功了。