知识关系
所属体系: 数据中心与基础设施 / 容器与镜像体系 主题节点: 记录用docker部署nextcloud及配套mariadb、redis和持久化存储 推荐前置: 国内docker hub无法使用的解决办法 相关主题: apt等各种源列表(持续更新) 原始来源:
source/_posts/记录用docker部署nextcloud及配套mariadb、redis和持久化存储.md从旧博客迁移;已按知识图谱结构重新归档。
使用docker compose便捷的部署nextcloud及其配套的mariadb和redis并实现数据持久存储在本地的办法
安装docker的教程在apt等各种源列表(持续更新),docker hub被禁,处理的办法在国内docker hub无法使用的解决办法
新的docker已经自带docker compose命令了,所以不需要再安装docker-compose,且需注意是docker空格compose而不是以前的-
docker compose基础命令如下:
# 指定配置文件并后台启动
docker compose -f 指定配置文件.yaml up -d
# 停止容器并删除容器
docker compose -f 指定配置文件.yaml downnextcloud.yaml配置文件如下
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 # 这条是示例,该配置的作用是让nextcloud的所有文件持久存储到本地的该目录
depends_on:
- db
- rediscrontab自动执行
# 每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