指定用户运行容器
指定运行容器的用户
如果您需要以非root用户运行容器,则可以使用mtphotos/mt-photos:nodb-latest
镜像;
因postgreSQL、Redis运行需要额外的权限,所以该镜像未集成数据库部分,需要单独安装PostgreSQL和Redis,然后通过添加环境变量来连接外部数据库;
PostgreSQL版本建议选择14.2以上,Redis版本建议5.0以上;这样可以避免数据库版本不一致而导致的问题;
添加环境变量
创建容器时,添加以下环境变量:
PostgreSQL相关的环境变量:
POSTGRES_HOST=192.168.1.108
POSTGRES_PORT=5432
POSTGRES_DATABASE=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=xxx
Redis相关的环境变量:
REDIS_HOST=192.168.1.108
REDIS_PORT=6379
REDIS_PASSWORD=xxx
如果redis没有密码,REDIS_PASSWORD可以不加
命令如下:
docker run -d -u 1000:100 \
--name="mt-photos" \
-v /appdata/mt_photos/config:/config \
-v /appdata/mt_photos/upload:/upload \
-v /photos/folder1:/folder1 \
-v /photos/folder2:/folder2 \
-p 8063:8063 \
-e TZ="Asia/Shanghai" \
-e POSTGRES_HOST="192.168.1.108" \
-e POSTGRES_PORT="5432" \
-e POSTGRES_DATABASE="postgres" \
-e POSTGRES_USER="postgres" \
-e POSTGRES_PASSWORD="数据库用户密码" \
-e REDIS_HOST="192.168.1.108" \
-e REDIS_PORT="6379" \
--restart="unless-stopped" \
mtphotos/mt-photos:nodb-latest
注意: 在指定了用户id
-u 1000:100
的情况下,环境变量中不要添加PUID、PGID
提示:请勿将PostgreSQL、Redis的端口暴露在公网中!!!
yaml 模板
version: "3"
services:
mtphotos:
image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos:nodb-latest
container_name: mtphotos
user: "1000:100" # 指定用户ID和组ID
restart: always
ports:
- 8063:8063
volumes:
- /volume1/docker/mt_photos/config:/config
- /volume1/photos/mt_photos_upload:/upload
- /volume1/xxx/其他需要映射的目录:/photos #提示:这一行是其他需要映射给容器的文件夹,如果没有可以删除这一行
environment:
- TZ=Asia/Shanghai
- LANG=C.UTF-8
- POSTGRES_HOST=mtphotos_db
- POSTGRES_DATABASE=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=my_db_pwd #注意修改数据库的密码
dns:
- 114.114.114.114
depends_on:
- mtphotos_ai
- mtphotos_face_api
- mtphotos_db
mtphotos_db:
image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-pg:latest
user: "1000:100" # 指定用户ID和组ID
container_name: mtphotos_pg
restart: always
volumes:
- /volume1/docker/mt_photos/db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=my_db_pwd #注意修改数据库的密码
- PGDATA=/var/lib/postgresql/data/pgdata
mtphotos_ai:
image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:onnx-latest
container_name: mtphotos_ai
restart: always
ports:
- 8060:8060
environment:
- API_AUTH_KEY=mt_photos_ai_extra
mtphotos_face_api:
image: crpi-gcuyquw9co62xzjn.cn-guangzhou.personal.cr.aliyuncs.com/devfox101/mt-photos-insightface-unofficial:latest
container_name: mtphotos_face_api
restart: always
ports:
- 8066:8066
environment:
- API_AUTH_KEY=mt_photos_ai_extra