使用 Docker 搭建 Nextcloud

╰半橙微兮° 2022-12-21 04:42 219阅读 0赞

目录

        • 说明
        • 配置 Docker 仓库
        • 安装 MySQL
        • 安装 Redis
        • 安装 nextcloud
        • 初始化配置
        • 优化
        • 另外

说明

本文内容参考 GitHub官方文档 和 Docker Hub。
在安装 nextcloud 时选用 MySQL 和 Redis 作为数据库,没有使用默认的数据库。

配置 Docker 仓库

配置国内仓库地址提高下砸镜像速度,修改配置文件/etc/docker/daemon.json,没有就新建,添加如下配置(我这里配置了多个地址):

  1. {
  2. "registry-mirrors": [
  3. "https://3laho3y3.mirror.aliyuncs.com",
  4. "https://registry.docker-cn.com",
  5. "https://mirror.ccs.tencentyun.com"
  6. ]
  7. }

保存之后重启 docker

  1. $ systemctl restart docker

安装 MySQL

拉取镜像

  1. $ docker pull mysql

创建持久化数据目录,表示 mysql 运行数据放在这个目录下: /home/mysql/data

  1. $ cd home
  2. $ mkdir mysql
  3. $ mkdir data

启动容器并指定持久化目录、指定root密码、端口映射

  1. $ docker run --privileged=true --name mysql8 \
  2. -v /home/mysql/data:/var/lib/mysql \
  3. -e MYSQL_ROOT_PASSWORD=123456 \
  4. -p 3306:3306 -d mysql

测试连接通过即可

安装 Redis

同样拉取镜像,创建持久化数据目录:/home/redis/data
如果需要 redis 配置文件可以通过以下命令获取:

  1. $ wget -P /usr/local/redis http://download.redis.io/redis-stable/redis.conf

启动容器指定配置文件启动、持久化目录、密码

  1. $ docker run -d --privileged=true -p 6379:6379 \
  2. -v /home/redis/redis.conf:/etc/redis/redis.conf \
  3. -v /home/redis/data:/data --name redis \
  4. redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 'redis6379'

安装 nextcloud

  1. $ docker run -d -p 8088:80 \
  2. --name nextcloud \
  3. --restart=always \
  4. -v /home/nextcloud/html:/var/www/html \
  5. -v /home/nextcloud/apps:/var/www/html/custom_apps \
  6. -v /home/nextcloud/config:/var/www/html/config \
  7. -v /home/nextcloud/data:/var/www/html/data \
  8. -v /home/nextcloud/theme:/var/www/html/themes \
  9. --link mysql8:mysql \
  10. --link redis:redis \
  11. nextcloud

参数 -v {映射到本地磁盘的目录}:{运行时数据的目录},这样重启容器数据不会丢失
参数 —link 连接到刚才安装的容器,可以将 mysql8 和 redis 作为主机名

初始化配置

通过 docker 启动后,在浏览器输入 http://ip:8088/ 进入初始设置界面
1、设置管理员账号和密码
2、配置数据库,选择 MySQL/MariaDB,分别输入:

  • 用户名:我直接填的 root
  • 密码:root 账号的密码
  • 数据库名:nextcloud
  • 主机:mysql8,因为我在 docker 启动命令中指定了 —link mysql8:mysql
    3、点击完成即可

优化

在 config.php 配置文件中加入如下配置(对应安装时映射路径,文件在 /home/nextcloud/config 下)

  1. 'memcache.local' => '\OC\Memcache\Redis',
  2. 'memcache.distributed' => '\OC\Memcache\Redis',
  3. 'memcache.locking' => '\OC\Memcache\Redis',
  4. 'redis' => array(
  5. 'host' => 'redis',
  6. 'port' => 6379,
  7. 'password' => 'redis6379'
  8. ),

以上内容加在最后一行 ); 内容之前。

另外

使用 docker-compose 会更简洁方便些,在 docker-compose.yml 同级目录下执行

  1. docker-compose up -d

docker-compose.yml 文件内容如下:

  1. version: '2'
  2. services:
  3. db:
  4. container_name: mysql
  5. image: mysql
  6. volumes:
  7. - /home/mysql/data:/var/lib/mysql
  8. environment:
  9. MYSQL_ROOT_PASSWORD: mysql数据库的密码
  10. MYSQL_DATABASE: nextcloud
  11. ports:
  12. - "6379:6379"
  13. restart: always
  14. redis:
  15. image: redis
  16. container_name: redis
  17. command: redis-server /etc/redis/redis.conf --appendonly yes --requirepass 'redis6379'
  18. ports:
  19. - "6379:6379"
  20. volumes:
  21. - /home/redis/data:/data
  22. - /home/redis/redis.conf:/etc/redis/redis.conf
  23. restart: always
  24. app:
  25. container_name: nextcloud_app
  26. depends_on:
  27. - redis
  28. - db
  29. image: nextcloud
  30. volumes:
  31. - /home/nextcloud/html:/var/www/html
  32. - /home/nextcloud/apps:/var/www/html/custom_apps
  33. - /home/nextcloud/config:/var/www/html/config
  34. - /home/nextcloud/data:/var/www/html/data
  35. links:
  36. - redis
  37. - db
  38. ports:
  39. - "8088:80"
  40. restart: always
  41. cron:
  42. container_name: nextcloud_cron
  43. image: nextcloud
  44. links:
  45. - redis
  46. - db
  47. volumes_from:
  48. - app
  49. user: www-data
  50. entrypoint: |
  51. bash -c 'bash -s <<EOF
  52. trap "break;exit" SIGHUP SIGINT SIGTERM
  53. while /bin/true; do
  54. /usr/local/bin/php /var/www/html/cron.php
  55. sleep 900
  56. done
  57. EOF'
  58. restart: always

发表评论

表情:
评论列表 (有 0 条评论,219人围观)

还没有评论,来说两句吧...

相关阅读