1. 使用docker为nexcloud创建容器网络
docker network create nextcloud
2. 新建docker-compose.yml,并写入以下内容。在任意目录即可。
version: '2'
services:
db:
container_name: cloud_db
image: mysql:5.7
volumes:
- "./data/cloud/mysql:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: mysql_root_pwd #mysql root用户密码,nextcloud后续初始化需要使用。
MYSQL_DATABASE: nextcloud #专为nextcloud新建的数据库,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:
- "80:80" # 前一个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
networks:
default:
external:
name: nextcloud
3. 保存docker-compose.yml,在同路径下启动docker-compose
docker-compose up -d
4. 如果期间出错,重新安装步骤
#由于执行docker-compose.yml已安装mysql和nextcloud镜像,先停止并删除相关容器
docker stop cloud_cron cloud_app cloud_db
docker rm cloud_cron cloud_app cloud_db
#进入挂载目录删除相关挂载文件 在同个路径
rm -rf data
#查看未被引用的容器卷
docker volume ls --filter dangling=true
#删除nextcloud的容器卷容器卷(这边注意要删除nextcloud相关不要误删)
docker volume rm 容器卷id
#或者直接
docker volume rm $(docker volume ls -qf dangling=true)
#重新启动容器
docker-compose up -d
5. 登录nextcloud并注册管理员帐号
浏览器打开http://阿里云主机的公网ip:80