使用docker compose便捷的部署nextcloud及其配套的mariadb和redis并实现数据持久存储在本地的办法
安装docker的教程在apt等各种源列表(持续更新),docker hub被禁,处理的办法在国内docker hub无法使用的解决办法
新的docker已经自带docker compose
命令了,所以不需要再安装docker-compose
,且需注意是docker空格compose
而不是以前的-
docker compose基础命令如下:
1 2 3 4 5
| # 指定配置文件并后台启动 docker compose -f 指定配置文件.yaml up -d
# 停止容器并删除容器 docker compose -f 指定配置文件.yaml down
|
nextcloud.yaml配置文件如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| services: db: image: mariadb:latest container_name: nextcloud-db restart: always environment: MYSQL_ROOT_PASSWORD: 设置你的数据库root密码 MYSQL_DATABASE: 设置你的数据库名 MYSQL_USER: 设置你的数据库用户名 MYSQL_PASSWORD: 设置你的数据库用户密码 volumes: - /mnt/nextcloud/db:/var/lib/mysql - 你的物理机路径:/var/lib/mysql
redis: image: redis:alpine container_name: nextcloud-redis restart: always
app: image: nextcloud:latest container_name: nextcloud-app restart: always ports: - 80:80 environment: MYSQL_HOST: db MYSQL_DATABASE: 你的数据库名 MYSQL_USER: 你的数据库用户名 MYSQL_PASSWORD: 你的数据库用户密码 REDIS_HOST: redis volumes: - /mnt/nextcloud/data:/var/www/html - 你的服务器路径:/var/www/html depends_on: - db - redis
|
crontab自动执行
1 2 3 4 5
| # 每5分钟执行一次cron */5 * * * * docker exec -u www-data nextcloud-app php -f /var/www/html/cron.php
# 每天0点down掉容器然后拉取nextcloud的更新,再启动,然后执行命令行更新 0 0 * * * docker compose -f /mnt/docker-compose.yaml down && docker pull nextcloud && docker compose -f /mnt/docker-compose.yaml up -d && docker exec -it -u 33 nextcloud-app php occ upgrade
|