
- Docker 教程
- Docker - 首頁
- Docker - 概述
- Docker - Linux 上的安裝
- Docker - 安裝
- Docker - Hub
- Docker - 映象
- Docker - 容器
- Docker - 登錄檔
- Docker - Compose
- Docker - 容器操作
- Docker - 架構
- Docker - 層
- Docker - 容器和主機
- Docker - 配置
- Docker - 容器和 Shell
- Docker - Dockerfile
- Docker - 構建檔案
- Docker - 公共倉庫
- Docker - 埠管理
- Docker - Web 伺服器
- Docker - 命令
- Docker - 容器連結
- Docker - 資料儲存
- Docker - 卷
- Docker - 網路
- Docker - 安全性
- Docker - 工具箱
- Docker - 雲
- Docker - 雲構建
- Docker - 日誌
- Docker - 持續整合
- Docker - Kubernetes 架構
- Docker - Kubernetes 的工作原理
- Docker - 生成式 AI
- Docker - 託管
- Docker - 最佳實踐
- Docker 服務設定
- Docker - Node.js 設定
- Docker - MongoDB 設定
- Docker - NGINX 設定
- Docker - ASP.Net 設定
- Docker - MySQL 設定
- Docker - Go 設定
- Docker - Rust 設定
- Docker - Apache 設定
- Docker - MariaDB 設定
- Docker - Jupyter 設定
- Docker - Portainer 設定
- Docker - Rstudio 設定
- Docker - Plex 設定
- Docker 設定 - Flame
- Docker 設定 - PostgreSQL
- Docker 設定 - Mosquitto
- Docker 設定 - Grafana
- Docker 設定 - Nextcloud
- Docker 設定 - Pawns
- Docker 設定 - Ubuntu
- Docker 設定 - RabbitMQ
- Docker - Python 設定
- Docker - Java 設定
- Docker - Redis 設定
- Docker - Alpine 設定
- Docker - BusyBox 設定
- Docker 設定 - Traefik
- Docker 設定 - WordPress
- Docker 有用資源
- Docker - 快速指南
- Docker - 有用資源
- Docker - 討論
Docker - Nextcloud 設定
Nextcloud 是一個免費、開源且自託管的雲端儲存平臺,允許使用者在多個裝置上儲存、共享和同步他們的檔案、聯絡人等。
與 Google Drive 和 Dropbox 類似,它支援檔案共享和協作,但額外的好處是完全控制資料和基礎設施。然而,為不同的環境設定 Nextcloud 在管理和可擴充套件性方面都可能帶來真正的挑戰。
Docker 應運而生,您可以將 Nextcloud 例項容器化,使其在所有生產環境中的行為方式相同,而無需為每個環境單獨部署它。本章將引導您完成 Nextcloud 的 Docker 化過程,以便您可以輕鬆地在多個環境中管理它。
Nextcloud Docker 化的先決條件
在開始本指南之前,請確保您擁有以下內容:
- Docker - 確保您的本地機器上已安裝 Docker。如果您具備 Docker 的基本知識,將更有幫助。
- Docker Compose - 如果您想透過 Docker Compose 使用 Docker 設定 Nextcloud,請確保您的機器上已安裝 Docker Compose。
- 命令列介面 (CLI) - 對命令列介面或 CLI 及其命令的基本瞭解將幫助您更好地理解本指南。
- 文字編輯器 - 將需要一個文字編輯器,例如 VSCode 或 Sublime Text,用於編寫配置檔案。
設定 Nextcloud 專案
在 Docker 上安裝 Nextcloud 之前,您可以在本地機器上建立一個 Nextcloud 專案。這將用作 Nextcloud 的 Docker 映象。
步驟 1:建立專案目錄
建立一個專案資料夾或目錄,用於儲存與 Nextcloud 相關的所有檔案。在 CLI 上使用以下命令建立目錄。
# This command will create a folder named nextcloud-docker $ mkdir nextcloud-docker # This command will take you inside the folder $ cd nextcloud-docker

步驟 2:建立一個基本的 Dockerfile
接下來,您需要建立一個基本的 docker 檔案,稍後將填充該檔案。Dockerfile 是一個包含一組指令的指令碼,用作 Docker 映象。
# Create a Dockerfile in your project directory $ touch Dockerfile

在任何文字編輯器中開啟您的 Dockerfile,並將以下內容新增到其中:
# Base image for Nextcloud FROM nextcloud:latest # Install any additional dependencies (optional) RUN apt-get update && apt-get install -y \ vim \ curl \ && apt-get clean # Copy your custom configuration files (if any) # COPY config/ /var/www/html/config/ # Expose the default Nextcloud port EXPOSE 80
此 Dockerfile 公開了埠 80 並將基本映象設定為 Nextcloud 映象。
步驟 3:構建自定義 Docker 映象
建立 Dockerfile 後,您可以使用以下命令建立您自己的自定義 Docker 映象:
# Build the custom Nextcloud Docker image named nextcloud $ docker build -t my-nextcloud .

步驟 4:執行 Nextcloud 容器
$ docker run -d --name nextcloud -p 8080:80 my-nextcloud

其中:
- -d - 表示分離模式
- --name nextcloud - 表示容器的名稱
- -p 8000:80 - 將您的本地主機埠 (8000) 對映到 Nextcloud 容器的埠 (80)。訪問 https://:8080 時,您正在訪問 Nextcloud 的容器
- my-nextcloud - 用於建立容器的 docker 映象的名稱

使用預構建的 Docker 映象
您可以使用官方的 Nextcloud Docker 映象(預構建並可立即使用),而不是建立自定義專案和 docker 映象來在 Docker 中安裝 Nextcloud。
步驟 1. 拉取 Nextcloud 映象
在執行 Nextcloud 容器之前,您需要拉取預構建的官方 Docker 映象。
$ docker pull nextcloud

步驟 2:執行 Nextcloud 容器
拉取 Docker 映象後,就可以執行 Nextcloud 容器了。
$ docker run -d --name nextcloud -p 8080:80 nextcloud

這將在本地主機埠 8000 上執行 Nextcloud 容器,該埠已對映到 Docker 容器埠 80。
使用 Docker Compose 設定 Nextcloud
步驟 1. 建立 .env 檔案
建立一個 .env 檔案來儲存所有資料庫環境變數。您也可以直接在配置檔案中使用它們,但不建議公開您的環境變數,因為這樣不安全。
$ touch db.env
在此檔案中新增以下環境變數。您可以在以後將此檔案的路徑新增到您的配置檔案中。
MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: nextcloudpassword
步驟 2. 建立 docker-compose.yml 檔案
接下來,在您的 nextcloud-docker 目錄中建立 docker-compose.yml 檔案。
$ touch docker-compose.yml

您的檔案結構如下所示:
nextcloud-docker/ ├── Dockerfile ├── db.env └── docker-compose.yml
步驟 3:填充 .yml 檔案
將以下配置新增到您的 docker-compose.yml 檔案中。
version: "3" services: db: image: mariadb restart: unless-stopped command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed volumes: - db:/var/lib/mysql env_file: - db.env redis: image: redis restart: always command: redis-server --requirepass your_redis_password app: image: nextcloud:latest restart: unless-stopped ports: - 8080:80 links: - db - redis volumes: - nextcloud:/var/www/html environment: - MYSQL_HOST=db - REDIS_HOST_PASSWORD=your_redis_password env_file: - db.env depends_on: - db - redis volumes: db: nextcloud:
- 版本 3 - 這是使用的 docker-compose 的穩定版本。
- 服務 - 服務代表構成此應用程式的單獨容器
- db - 這表示服務中使用的資料庫,在本例中為 MariaDB。除非顯式停止,否則資料庫設定為重新啟動。“卷”表示用於永久資料儲存的 docker 卷,以防止容器刪除後資料丟失。“env-file”是 db.env 檔案的位置,其中添加了所有與 db 相關的環境變數。
- redis - 此服務使用 Redis 伺服器進行快取。
- app - 這是在埠 80 上執行的 Nextcloud 應用程式映象,並對映到本地主機埠 8000。MariaDB 和 Redis 服務已連結,卷的名稱為 Nextcloud。
- 卷 - 這些是用於永久儲存資料的 docker 卷。兩個名為“db”和“nextcloud”的卷用於儲存 MariaDB 和應用程式資料。
步驟 4:執行 docker-compose.yml 檔案
使用以下命令執行您的 docker-compose.yml 檔案
$ docker-compose up -d

結論
您已成功將 Nextcloud 容器 Docker 化,建立了 Docker 映象,並在 Docker 容器內執行它,從而確保在不同環境中的一致性。這種方法允許您透過簡單地拉取更新的映象並重新部署容器來輕鬆更新 Docker 例項。模組化、安全、可移植性和隔離是這種方法提供的關鍵特性。
在 Docker 中設定 Nextcloud 的常見問題
在本節中,我們收集了一組關於在 Docker 中設定 Nextcloud 的常見問題及其答案。
1. 我可以將資料庫從 MariaDB 更改為其他資料庫(如 PostgreSQL)嗎?
是的,您可以將資料庫從 MariaDB 更改為其他資料庫(如 PostgreSQL)。您只需要更改 docker-compose.yml 檔案中的“db”配置即可。
將 db 映象從 MariaDB 更改為 PostgreSQL。您還需要相應地更改 db.env 檔案中的環境變數。
2. 如何診斷和修復 Docker 化 Nextcloud 系統中的效能問題?
首先,使用 docker logs <container_name> 檢查資料庫和 Nextcloud 容器的容器日誌。可以使用 Docker stats 來跟蹤資源消耗並識別任何效能問題。增加可用 RAM 和 CPU 的數量或設定 Redis 以進行更多快取是提高速度的常見方法。
3. 如果 Nextcloud 在 Docker 容器中執行,我該如何管理那裡的檔案許可權?
使用 Docker 執行 Nextcloud 時,主機計算機上的檔案許可權可能需要與容器的使用者和組 ID 匹配。
您可以透過更改 Docker 卷的所有權或透過將 user 指令新增到 Dockerfile 或 docker-compose.yml 檔案來控制權限。