文章目录
前言
当你迷茫的时候,请点击 Docker 实战目录 快速查看前面的技术文章,相信你总能找到前行的方向
本文用使用 Docker Compose 快速搭建 Nextcloud, 搭建个人网盘
1. 创建 docker-compose.yml
version: '3.0'
services:
nextcloud:
image: nextcloud:latest
container_name: nextcloud
restart: unless-stopped
ports:
- "6780:80" # 映射到宿主机的 6780 端口(避免与现有 80 端口冲突)
volumes:
- ./apps:/var/www/html/custom_apps # 自定义应用
- ./config:/var/www/html/config # 配置文件
- ./data:/var/www/html/data # 文件存储
environment:
- NEXTCLOUD_ADMIN_USER=admin # 初始管理员用户名
- NEXTCLOUD_ADMIN_PASSWORD=12345678 # 初始管理员密码
depends_on:
- db
- redis
networks:
- nextcloud_network
db:
image: mysql:8.2.0
container_name: nextcloud_db
restart: unless-stopped
volumes:
- ./db:/var/lib/mysql # 数据库持久化
environment:
- MYSQL_ROOT_PASSWORD=aa12345678
- MYSQL_PASSWORD=aa12345678
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- nextcloud_network
redis:
image: redis:latest
container_name: nextcloud_redis
restart: unless-stopped
networks:
- nextcloud_network
networks:
nextcloud_network:
driver: bridge
2. 启动 Nextcloud
docker-compose up -d # 后台启动
3. 访问 Nextcloud
- 浏览器访问:
http://localhost:6780
- 初始登录:
- 用户名:
admin
- 密码:
12345678
(在docker-compose.yml
中设置)
- 用户名:
初始会有在页面上提示在数据库创建管理员账号, 数据库主机填docker 中的服务名, 在这里是 db
, 也可以用外置数据库,只要nextcloud能访问到
之后就可以愉快地使用你的私有网盘了
4. 配置优化(可选)
使用 PostgreSQL
修改 db
服务部分:
db:
image: postgres:14
container_name: nextcloud_db
restart: unless-stopped
volumes:
- ./db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=dbpassword
- POSTGRES_USER=nextcloud
- POSTGRES_DB=nextcloud
使用 redis
在 config/config.php
中添加:
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'redis',
'port' => 6379,
],
添加 Cron 后台任务
在 nextcloud
服务中添加:
nextcloud:
# ... 其他配置 ...
environment:
- NEXTCLOUD_CRONJOB_ENABLED=true # 启用 cron
5. 常用命令
命令 | 说明 |
---|---|
docker-compose logs -f |
查看日志 |
docker-compose down |
停止并删除容器 |
docker-compose pull |
更新镜像 |
6. 反向代理(Nginx/Apache)
如果需要通过域名访问(如 https://cloud.yourdomain.com
),可添加 Nginx 反向代理:
server {
listen 80;
server_name cloud.yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name cloud.yourdomain.com;
ssl_certificate /path/to/ssl.crt;
ssl_certificate_key /path/to/ssl.key;
location / {
proxy_pass http://localhost:6780;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
通过以上步骤,你可以快速搭建一个高可用、可扩展的 Nextcloud 私有云! 🌟