build(newapi): 全容器化部署并添加 PostgreSQL 服务

This commit is contained in:
cnphpbb
2026-09-02 12:29:39 +08:00
parent 3ea11a9945
commit b1113a5c2c
2 changed files with 62 additions and 22 deletions
+15 -10
View File
@@ -8,15 +8,17 @@
# $EDITOR env.cfg # 填入真实密码/密钥后保存
# docker compose -p newapi --env-file ./env.cfg -f ./stack.yml up -d
#
# 前置:宿主机 PostgreSQL 建库建号(只需一次):
# sudo -u postgres psql -c "CREATE ROLE newapi LOGIN PASSWORD '<你的强密码>';"
# sudo -u postgres psql -c 'CREATE DATABASE new_api OWNER newapi;'
# sudo -u postgres psql -c 'GRANT ALL PRIVILEGES ON DATABASE new_api TO newapi;'
# # PG < 13 若建表报权限错,补:GRANT ALL ON SCHEMA public TO newapi;
# 说明:本栈为全容器化独立部署(new-api + Redis + PostgreSQL),
# 容器内 PostgreSQL 会自动初始化库和账号,无需在宿主机手动建库或配置 pg_hba。
# 容器 PG 未映射宿主机端口,不会与宿主机已有的 PostgreSQL 服务产生端口冲突。
#
# 注意:SQL_DSN / REDIS_CONN_STRING 为 URL 格式,
# 密码建议纯字母+数字,含 @ : / # 等字符时需做百分号转义
# ---------- 端口 ----------
# new-api Web 服务对外暴露端口
PORT=3000
# ---------- 镜像 ----------
# new-api 版本号(与 GitHub release tag 同名;拉取失败可回退 latest)
IMAGE_TAG_VER=v1.0.0-rc.30
@@ -24,20 +26,23 @@ IMAGE_TAG_VER=v1.0.0-rc.30
IMAGE_TAG=calciumion/new-api:${IMAGE_TAG_VER}
# Redis 镜像
REDIS_IMAGE_TAG=redis:8.2
# PostgreSQL 镜像
PGSQL_IMAGE_TAG=postgres:16-alpine
# ---------- 数据卷 ----------
# 宿主机持久化目录,挂载到容器 /data/app/logs
# 部署前手动创建:mkdir -pv /data/volumes/newapi/{data,logs}
# 宿主机持久化目录,挂载到容器 /data/app/logs、redis 数据以及 pgsql 数据
# 部署前手动创建:mkdir -pv /data/volumes/newapi/{data,logs,redis,pgsql_data}
Volumes_Path=/data/volumes/newapi
# ---------- 数据库(宿主机已有 PostgreSQL,建议 13+----------
DB_HOST=127.0.0.1
# ---------- 数据库(容器内 PostgreSQL----------
# 容器内网络互通,通过服务名 postgres 访问
DB_HOST=postgres
DB_PORT=5432
DB_NAME=new_api
DB_USER=newapi
DB_PASSWORD=<your-strong-password>
# ---------- Redis本栈自建容器,host 网络,只绑 127.0.0.1----------
# ---------- Redis容器内 Redis----------
REDIS_PASSWORD=<your-strong-password>
# ---------- new-api 应用 ----------