使用Docker在服务器上搭建兰空图床
本文将介绍如何使用Docker快速搭建兰空图床
首先请参考我写的这篇文章来完成Docker的安装
这里使用了以下项目,感谢项目作者的付出:
https://github.com/HalcyonAzure/lsky-pro-docker
部署方法
请运行以下命令进行兰空图床的部署:1
2
3
4
5
6
7docker run -d \
--name lsky-pro \
--restart unless-stopped \
-p 8089:8089 \
-v $PWD/lsky/web:/var/www/html \
-e WEB_PORT=8089 \
halcyonazure/lsky-pro-docker:latest
也可以使用Docker-Compose部署
使用MySQL
来作为数据库的话可以参考原项目 #256 来创建docker-compose.yaml
,参考内容如下:
1 | version: '3' |
之后在docker-compose.yml
所在目录中运行docker compose up
命令即可。
反代HTTPS的设置
我使用了Nginx反代后,出现了静态资源加载异常的问题,这时候可以执行以下指令来手动修改容器内AppServiceProvider.php
文件对于HTTPS的支持
注意要将lskypro
改为自己容器的名字
1 | docker exec -it lskypro sed -i '32 a \\\Illuminate\\Support\\Facades\\URL::forceScheme('"'"'https'"'"');' /var/www/html/app/Providers/AppServiceProvider.php |
修复开源版兰空图床中通过API指定图片上传相册无效的问题
个人感觉这个不是开源版中的bug,而是特有的feature?
定位到文件/var/www/html/app/Services/ImageService.php
第139行:
原代码为:1
2
3
4
5
6// 图片保存至默认相册(若有)
if ($albumId = $user->configs->get(UserConfigKey::DefaultAlbum)) {
if ($user->albums()->where('id', $albumId)->exists()) {
$image->album_id = $albumId;
}
}
需要修改为:1
2
3
4
5
6
7
8
9
10if ($request->has('album_id')) {
$image->album_id = $request->input('album_id');
} else {
// 图片保存至默认相册(若有)
if ($albumId = $user->configs->get(UserConfigKey::DefaultAlbum)) {
if ($user->albums()->where('id', $albumId)->exists()) {
$image->album_id = $albumId;
}
}
}
这个在容器里不是很好改,下面是两种用于修改的方案:
方案一:
- 通过
docker exec -it lskypro bash
进入容器 - 通过
apt update && apt install vi
安装一个文本编辑器 - 通过
vi /var/www/html/app/Services/ImageService.php
打开该文件修改
方案一说实话是个笨办法,因为网络问题,有时候需要更换容器内的apt镜像源才能正常进行安装操作
方案二(推荐):
这个操作的本质就是向一个文件中插入文本行,所以运行下面两行命令即可解决问题:1
2docker exec -it lskypro sed -i '139i\ if ($request->has("album_id")) {\n $image->album_id = $request->input("album_id");\n} else {' /var/www/html/app/Services/ImageService.php
docker exec -it lskypro sed -i '148i\ }' /var/www/html/app/Services/ImageService.php
这个方案的问题在于作者有可能会在以后的版本中增删该php文件中的代码,sed
命令操作的行位置可能会变,这时候就需要自己灵活修改了。
下图为效果图:
参考链接
https://github.com/HalcyonAzure/lsky-pro-docker
https://github.com/lsky-org/lsky-pro/issues/495