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
近期评论