使用 Docker Compose 部署 Nextcloud

使用 Docker Compose 部署 Nextcloud,并将配置和数据存储在 /disk2/nextcloud_data 目录中的完整详细步骤,一次性给出:

  1. 确保 /disk2/nextcloud_data 目录存在

首先,你需要确保 /disk2/nextcloud_data 目录存在,并且 Docker 进程有读写权限。如果不存在,请创建它:

sudo mkdir -p /disk2/nextcloud_data
sudo chown -R USER:USER /disk2/nextcloud_data  # 将目录所有者改为当前用户
  1. 创建 docker-compose.yml 文件

在任意你喜欢的位置(例如 ~/nextcloud),创建一个名为 docker-compose.yml 的文件,并粘贴以下内容:

version: '3.7'

services:
  db:
    image: mariadb:10.6
    restart: always
    volumes:
      - /disk2/nextcloud_data/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=your_mysql_root_password  # 请替换为你的 MariaDB root 密码
      - MYSQL_PASSWORD=your_nextcloud_db_password  # 请替换为你的 Nextcloud 数据库密码
      - MYSQL_DATABASE=nextcloud  # Nextcloud 数据库名称
      - MYSQL_USER=nextcloud # Nextcloud 数据库用户

  app:
    image: nextcloud:latest
    restart: always
    ports:
      - 8080:80 # 将 Nextcloud 暴露在宿主机的 8080 端口
    volumes:
      - /disk2/nextcloud_data/nextcloud:/var/www/html
    depends_on:
      - db
    environment:
       - MYSQL_HOST=db # 使用 docker 内部的域名db指向数据库
       - MYSQL_PASSWORD=your_nextcloud_db_password # 请替换为你的 Nextcloud 数据库密码
       - MYSQL_DATABASE=nextcloud # Nextcloud 数据库名称
       - MYSQL_USER=nextcloud # Nextcloud 数据库用户
       - NEXTCLOUD_TRUSTED_DOMAINS=localhost,127.0.0.1 # 修改为你访问nextcloud的域名
       - NEXTCLOUD_ADMIN_USER=admin # 默认管理账号admin
       - NEXTCLOUD_ADMIN_PASSWORD=admin # 默认管理密码admin

networks:
  default:
      name: nextcloud_net
  1. 解释 docker-compose.yml 文件
    version: '3.7': 指定 Docker Compose 文件版本。

    services: 定义了 Nextcloud 部署所需要的两个服务:

        db: MariaDB 数据库服务:

            image: mariadb:10.6: 使用 MariaDB 10.6 镜像。

            restart: always: 容器总是重启,除非手动停止。

            volumes: 将主机上的 /disk2/nextcloud_data/db 目录挂载到容器的 /var/lib/mysql 目录,用于持久化存储数据库数据。

            environment: 设置 MariaDB 的环境变量,包括 root 密码、Nextcloud 数据库密码、数据库名称和用户。请务必替换 your_mysql_root_password 和 your_nextcloud_db_password 为你自己的密码。

        app: Nextcloud 应用服务:

            image: nextcloud:latest: 使用最新版本的 Nextcloud 镜像。

            restart: always: 容器总是重启,除非手动停止。

            ports: 将主机的 8080 端口映射到容器的 80 端口,用于访问 Nextcloud。你可以修改为其他端口。

            volumes: 将主机上的 /disk2/nextcloud_data/nextcloud 目录挂载到容器的 /var/www/html 目录,用于持久化存储 Nextcloud 应用数据和配置文件。

            depends_on: 指定 app 服务依赖于 db 服务,确保数据库先启动。

            environment: 设置 Nextcloud 的环境变量,包括数据库连接信息,管理员账号密码,信任域名。请务必替换 your_nextcloud_db_password 为你设置的密码。

    networks: 定义一个名为 nextcloud_net 的docker网络。
  1. 启动 Nextcloud

在包含 docker-compose.yml 文件的目录下,执行以下命令启动 Nextcloud:

docker-compose up -d

这个命令会:

下载 MariaDB 和 Nextcloud 镜像(如果本地没有)。

创建并启动两个容器 (db 和 app)。

在后台运行容器。
  1. 访问 Nextcloud

等待一段时间,确保所有容器都成功启动后,在浏览器中访问:

http://localhost:8080
如果你的docker服务运行在远端服务器,将localhost替换为你的服务器IP或者域名

如果你修改了端口映射,需要用你映射的端口号访问,比如修改为 80:80,应该使用 http://localhost 访问

你应该能看到 Nextcloud 的登录界面。使用你在 docker-compose.yml 中设置的用户名和密码(默认是 admin/admin)登录。

  1. Nextcloud 初始化设置

首次登录时,Nextcloud 可能会提示你进行一些初始化设置,你可以根据你的需求进行设置。

  1. 数据存储位置
所有 Nextcloud 的数据都将存储在 /disk2/nextcloud_data 目录下:

    /disk2/nextcloud_data/db: 存储 MariaDB 数据库数据。

    /disk2/nextcloud_data/nextcloud: 存储 Nextcloud 的配置、用户数据和应用数据。

完整步骤总结

    确保 /disk2/nextcloud_data 目录存在,且有读写权限。

    创建 docker-compose.yml 文件,并替换密码等占位符。

    执行 docker-compose up -d 启动 Nextcloud。

    在浏览器中访问 http://localhost:8080 (或者你指定的地址)。

    使用设置的用户名密码登录。

    进行 Nextcloud 初始化设置。

    所有数据将存储在 /disk2/nextcloud_data 目录中。

现在,你已经成功使用 Docker Compose 部署了 Nextcloud,并将数据存储在指定的磁盘位置。你可以开始使用 Nextcloud,并根据需要进行配置和扩展。