手上有一台铁威马Nas,4盘位双核CPU,X86架构的机器。铁威马的硬件还可以,性价比比较足,但是生态很一般,对于相册的管理方面,官方的不怎么满意,在外网找了几个要么功能太简陋,要么内存占用太高,带不动。
搞来搞去还是自己弄一个,考虑到性能和开销问题,最后选择的是Rust语言,想着横竖都能编译到机器上运行,实在不行Nas还支持Docker,也能解决一部分问题。由于照片太多,所以使用了Tensorflow框架配合MobileNetV2模型进行照片分类和人脸识别,模型都是S规模的,开销可控。
在开发机器上开发好以后直接打包成Docker准备试试,由于使用了Vue作为前端,所以打包分两部分,先构建前端,然后构建后端,最后产出最终镜像。Dockerfile文件如下:
FROM node:16 as front
WORKDIR /usr/src/pototd
COPY ./webapp ./webapp
RUN cd webapp && npm install && npm run build
FROM rust:1.62.1 as builder
COPY --from=front /usr/src/pototd/webapp/dist /usr/src/pototd/webapp/dist
RUN apt update && apt install -y libssl-dev musl-tools libsqlite3-dev …