在数字内容创作与团队协作中,高效、可控的图片托管与管理一直是个痛点。将图片存储在第三方平台面临链接失效、收费涨价和安全风险。今天,我们将介绍如何通过
Docker容器化技术,快速搭建一个属于自己或团队的私有图床——Lsky Pro,实现图片的自主存储、分类管理与高速访问,彻底解决外链依赖问题。本文将提供从环境准备到一键部署的完整指南。
1. 兰空图床(Lsky Pro)
兰空图床 (Lsky Pro)并不仅仅是一个简单的“外链生成器”。它是一个功能完整、开源自托管的专业图床与云相册系统,旨在让您与您的团队能够完全掌控自己的视觉资产。
它解决了以下核心问题:
- 数据主权:图片数据完全由您掌控,可自由存储在自有服务器或任一种支持的第三方云存储服务中,杜绝了外链失效与平台依赖风险。
- 高效管理:提供直观的Web界面,支持多用户、多角色权限、文件夹分类、标签以及强大的图片预览与管理功能,将散乱的图片变为有序的资产。
- 开箱即用:通过Docker容器化部署,可以屏蔽复杂的PHP环境配置,实现几分钟内快速搭建和稳定运行,极大降低了使用门槛。
核心特性一览:
- 📦 多存储支持:支持本地、又拍云、阿里云OSS、腾讯云COS、七牛云KODO、AWS S3等多种存储驱动。
- 👥 多用户与角色:完善的用户系统,支持管理员、普通用户等角色,适合团队协作。
- 🔗 便捷的外链:一键生成图片外链,支持URL、HTML、Markdown等多种格式。
- 🖼️ 图片处理:支持预览、批量管理、相册等功能。
- 🐳 容器化部署:提供官方Docker镜像,部署与维护极其简单。
官方资源:
- 项目官网与文档:https://www.lsky.pro/
- GitHub 仓库:https://github.com/lsky-org/lsky-pro
2. 安装docker与docker-compose
centos7如何安装Docker以及Docker Compose
可以通过执行【docker version】命令来查看,如果输出信息中包含Client选项和Server选项,那么就表示已经安装了docker
2.1 安装docker容器
sudoyuminstall-y yum-utilssudoyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudoyum-config-manager --enable docker-ce-nightlysudoyuminstalldocker-ce docker-ce-cli containerd.iosystemctl start docker#启动容器systemctlenabledocker#开机自启systemctl status docker#查看状态2.2 删除docker容器
sudoyum remove docker-ce docker-ce-cli containerd.io# 删除所有映像、容器和卷:sudorm-rf /var/lib/dockersudorm-rf /var/lib/containerd2.3 Docker Compose安装步骤
- 下载安装
sudocurl-L"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname-s)-$(uname-m)"-o /usr/local/bin/docker-compose- 给执行权限
sudochmod+x /usr/local/bin/docker-compose- 创建链接
sudoln-s /usr/local/bin/docker-compose /usr/bin/docker-compose- 查看docker-compose版本
docker-compose --version- 创建docker-compose.yml文件
vimdocker-compose.yml- 启动服务
docker-compose up -d
Ubuntu 20.04.4 LTS如何安装Docker以及Docker Compose
# 一、安装docker容器sudoapt-getupdatesudoapt-getinstalldocker-ce docker-ce-cli containerd.io docker-compose-pluginy# 验证docker --version# 二.Docker-Compose 安装# 1.先安装pipaptinstallpython3-pip# 2.安装docker-composesudopipinstall-U docker-compose 类似如下输出,说明安装成功: Collecting docker-compose Downloading docker_compose-1.29.2-py2.py3-none-any.whl(114kB)... Successfully installed attrs-21.4.0 distro-1.7.0 docker-5.0.3 docker-compose-1.29.2 dockerpty-0.4.1 docopt-0.6.2 jsonschema-3.2.0 pyrsistent-0.18.1 python-dotenv-0.19.2 texttable-1.6.4 websocket-client-0.59.0# 3.验证docker-compose --version 出现以下说明安装成功: docker-compose version1.20.1, build 5d8c71b# 4.卸载sudopip uninstall docker-compose3. 创建docker-compose.yml
version:'3.8'# 注意:3.8是较新的版本,支持更多特性,如果您的Docker版本较旧,可降级为'3'services:# MySQL 数据库服务mysql: image: mysql:8.0# 使用MySQL 8.0官方镜像container_name: lsky-mysql# 指定容器名称,便于管理restart: unless-stopped# 除非手动停止,否则异常退出时自动重启environment:# 【安全警告】必须修改:设置root超级用户密码,建议使用强密码-MYSQL_ROOT_PASSWORD=YourStrongRootPassword123!# 容器启动时自动创建的数据库名称(图床专用)-MYSQL_DATABASE=lsky# 自动创建的普通用户(专供Lsky Pro程序使用,非root)-MYSQL_USER=lsky# 【安全警告】必须修改:上述普通用户的密码,与下方DB_PASSWORD保持一致-MYSQL_PASSWORD=YourLskyPassword123!volumes:# 将容器内的MySQL数据目录映射到宿主机的./data/mysql目录# 目的:①持久化数据 ②方便备份 ③容器删除后数据不丢失- ./data/mysql:/var/lib/mysql networks: - lsky-network# 加入自定义网络,使其他服务可通过服务名"mysql"访问command:# MySQL 8.x 兼容性设置:使用旧版密码插件,确保PHP程序能正常连接- --default-authentication-plugin=mysql_native_password# 设置数据库默认字符集为utf8mb4,支持存储Emoji等特殊字符- --character-set-server=utf8mb4# 设置默认校对规则- --collation-server=utf8mb4_unicode_ci# Redis 缓存服务(用于提升性能:会话存储、队列、缓存)redis: image: redis:7-alpine# 使用Redis 7的轻量alpine版本container_name: lsky-redis restart: unless-stopped# 【安全警告】必须修改:启动Redis时设置访问密码command: redis-server --requirepass YourRedisPassword123!volumes:# Redis数据持久化到宿主机- ./data/redis:/data networks: - lsky-network# Lsky Pro 核心应用服务lsky-pro:# 使用您指定的第三方镜像,注意:非官方镜像,由社区维护image: 0xxb/lsky-pro:latest container_name: lsky-pro-web restart: unless-stopped# 依赖关系:确保mysql和redis服务先启动后再启动本服务depends_on: - mysql - redis ports:# 端口映射格式:宿主机端口:容器内部端口# 将宿主机的8000端口映射到容器的8000端口(容器内应用在此端口监听)# 访问方式:http://你的服务器IP:8000-"8000:8000"volumes:# 映射应用存储目录:上传的图片、缓存文件等关键数据- ./data/storage:/app/storage/app# 映射主题目录:用于安装第三方主题或自定义主题- ./data/themes:/app/themes environment:# 数据库连接配置(必须与上方mysql服务设置匹配)-DB_CONNECTION=mysql# 数据库类型-DB_HOST=mysql# 使用docker-compose服务名(自动DNS解析)-DB_PORT=3306# MySQL默认端口-DB_DATABASE=lsky# 数据库名,与MYSQL_DATABASE一致-DB_USERNAME=lsky# 用户名,与MYSQL_USER一致-DB_PASSWORD=YourLskyPassword123!# 密码,与MYSQL_PASSWORD一致# Redis连接配置(必须与上方redis服务设置匹配)-REDIS_HOST=redis# 使用docker-compose服务名-REDIS_PASSWORD=YourRedisPassword123!# 密码,与redis命令中设置的一致-REDIS_PORT=6379# Redis默认端口networks: - lsky-network# 自定义网络配置networks: lsky-network: driver: bridge# 使用桥接网络模式# 效果:在此网络中的容器可以通过服务名相互访问# 例如lsky-pro容器中可通过"mysql:3306"访问数据库服务4. 部署使用
# 1. 创建项目目录并进入mkdirlsky-pro&&cdlsky-pro# 2. 创建docker-compose.yml文件(将上方内容粘贴保存)nanodocker-compose.yml# 3. 启动所有服务(后台运行)docker-compose up -d# 4. 查看启动状态docker-composeps# 5. 查看实时日志docker-compose logs -f lsky-pro-web
访问安装页面:http://你的服务器IP:8000,进入Lsky Pro的图形化安装向导
配置参数信息:
安装成功:
通过容器化技术部署
Lsky Pro,我们不仅实现了一套高可用的私有化媒体资产管理系统,更构建了符合云原生理念的数字内容基础设施。这种基于微服务架构的解决方案,将数据主权、存储抽象和访问控制进行了技术性解耦,使图片资源的管理从简单的文件存储升级为可编程的视觉内容接口。此次部署实践验证了Docker Compose在服务编排、网络隔离和持久化卷管理方面的工程价值,为后续实现弹性伸缩、蓝绿部署等高级运维场景奠定了技术基础。最终交付的是一套具备企业级特性的图床系统,它既是技术栈的有机整合,也是DevOps理念在具体应用场景的成功实践。