Docker Compose 安装 nextcloud 并支持SMB持久化

0.环境说明:

①Debian12

②RAM 8G HHD 80G

③ROOT 权限

④SMB空间20T

1.创建Docker File文件,持久化镜像:

mkdir -p /usr/docker/nextcloud # 创建nextcloud构建目录
cd /usr/docker/nextcloud 
vi Dockerfile 

将下面内容写入 Dockerfile文件

FROM nextcloud:latest  #切换到 root 用户以安装软件包
USER root  #安装 SMB 客户端和必要的依赖库
RUN apt-get update && apt-get install -y \
     smbclient \
     libsmbclient-dev \
     && rm -rf /var/lib/apt/lists/*
 #(可选)切换回 Nextcloud 默认的用户(通常是 www-data)
 USER www-data

构建nextcloud镜像

docker build --network=host -t my-nextcloud .  #其中'my-nextcloud'就是你构建的私有化镜像名称
即构建完成

2.建立DockerCompose 文件

cd /usr/docker/nextcloud 
vi docker-compse.yml

写入以下内容:

version: '3'

services:
  nextcloud-db:
    image: mariadb:10.5
    container_name: nextcloud-db
    ports:
      - "3306:3306" 
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD# 请修改为强密码
      MYSQL_PASSWORD: MYSQL_PASSWORD         # 请修改为强密码
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
    volumes:
      - ./mysql:/var/lib/mysql

  nextcloud-app:
    image: my-nextcloud
    container_name: nextcloud-app
    restart: unless-stopped
    ports:
      - "80:80"  
    depends_on:
      - nextcloud-db
    environment:
      - NEXTCLOUD_ADMIN_USER=admin           # 初始化管理员用户名
      - NEXTCLOUD_ADMIN_PASSWORD=yourpass         # 初始化管理员密码,请修改
      - MYSQL_HOST=nextcloud-db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=MYSQL_PASSWORD   # 与数据库服务的MYSQL_PASSWORD一致
    volumes:
      - ./nextcloud:/var/www/html  # Nextcloud数据和文件

接下来启动容器

docker-compose up -d 

3.nextcloud配置

访问:你的IP地址进入nextcloud

点击自己的头像,进入应用

启动 external stroge 应用

此时在侧边栏看到外部存储,输入SMB信息后即可成功挂载

4.问题:

①若遇到网络访问问题
"ERROR: failed to solve: DeadlineExceeded: nextcloud:latest: failed to resolve source metadata for docker.io/library/nextcloud:latest: failed to do request: Head "https://registry-1.docker.io/v2/library/nextcloud/manifests/latest": dial tcp [2a03:2880:f111:83:face:b00c:0:25de]:443: i/o timeout"

则修改Docker默认配置文件:

vi /etc/docker/daemon.json

键入以下内容:

{

    "registry-mirrors": [
        "https://xxx.mirror.aliyuncs.com",#可以去阿里云开放平台申请,这里不赘述
        "https://docker.m.daocloud.io",
        "https://mirror.baidubce.com",
        "https://dockerproxy.com",
        "https://mirror.iscas.ac.cn",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud",
        "https://noohub.ru"
    ],
    "data-root": "/usr/data/docker",
    "log-driver": "json-file",
    "log-opts": { 
        "max-size": "10m",
        "max-file": "3"
    }
}

然后重启docker即可执行成功

systemctl restart docker

发表评论

Your email address will not be published.