一、webps 安装配置
不通过webps直接跑,参考了官方文档,直接通过docker方式来处理,这样做好处不需要安装依赖,安装过程对于不懂处理动态库的也是很难受的,因为安装一步错一步。
官方文档:https://docs.webp.sh/
docker compose 模板文件:
version: '3'
services:
webp:
image: webpsh/webp-server-go
# image: ghcr.io/webp-sh/webp_server_go
restart: always
environment:
- MALLOC_ARENA_MAX=1
- LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
volumes:
- /path/to/pics:/opt/pics
- /path/to/exhaust:/opt/exhaust
- /config.json:/etc/config.json
ports:
- 3333:3333
deploy:
resources:
limits:
memory: 400M
memswap_limit: 400M
这里面最重要的就是挂载目录,halo是支持多策略上传的,所以这里需要挂载多个目录,以本地存储策略和腾讯云COS为例:
2.x本地存储一般会在安装目录下:halo/attachments
腾讯云COS挂载本机路径:/mnt/cos
/mnt/cos 目录下有子目录,需要一个个具体挂载到docker容器目录,因为docker不支持宿主机多目录映射docker容器单目录。
假设,/mnt/cos 下有个 img 目录,那么最终的docker compose 文件如何下:
version: '3'
services:
webp:
image: webpsh/webp-server-go
# image: ghcr.io/webp-sh/webp_server_go
restart: always
environment:
- MALLOC_ARENA_MAX=1
- LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
volumes:
- /opt/halo/attachments/upload:/opt/pics/upload
- /opt/halo/attachments/exhaust:/opt/exhaust
- /mnt/cos/img:/opt/pics/img
- /opt/webps/config.json:/etc/config.json
ports:
- 3333:3333
deploy:
resources:
limits:
memory: 400M
memswap_limit: 400M
这里面映射到docker容器目录的时候,千万不要映射到父目录/opt/pics,不然 webps就只处理单目录了。
config.json 文件:
{
"HOST": "0.0.0.0",
"PORT": "3333",
"QUALITY": "80",
"IMG_PATH": "/opt/pics",
"EXHAUST_PATH": "/opt/exhaust",
"ALLOWED_TYPES": ["jpg","png","jpeg","gif"]
}
如果通过映射config.json 文件不生效,那么直接修改docker容器里面的配置文件:/etc/config.json