feat: Docker Compose 最小编排——postgres:18 + 双无状态服务容器(ADR-007)
- 新增 docker-compose.yml、两服务 Dockerfile(eclipse-temurin:17-jre、非 root、仅装 exec jar)与 deploy/init-secrets.sh(幂等生成 RS256 密钥对与 .env 随机机密,产物入 .gitignore) - 容器配置复用 application.yml.sample(SPRING_CONFIG_LOCATION 挂载)+ PATBOND_* 环境变量,与本机运行同一套约定;DB 端口不对宿主机发布 - spring-boot-maven-plugin 显式绑定 repackage(本工程无 starter-parent,此前 package 产物不可执行),exec classifier 保留普通 jar 供 auth 模块 E2E 依赖 - 验收:docker compose up -d --build 后完整冒烟通过(register→me→refresh→旧 token 重用 40102→/internal 无凭证 401→logout),down -v 无残留;./mvnw clean test 全绿 74 测试 - README 新增 Docker Compose 一节 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Executable
+25
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
# 生成 docker compose 运行所需的本地机密:RS256 密钥对 + .env(DB 口令、内部令牌)。
|
||||
# 产物全部被 .gitignore 忽略,绝不入库;重复执行是幂等的(已存在则不覆盖)。
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
mkdir -p deploy/keys
|
||||
if [ ! -f deploy/keys/jwt-private.pem ]; then
|
||||
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out deploy/keys/jwt-private.pem
|
||||
echo "已生成 deploy/keys/jwt-private.pem"
|
||||
fi
|
||||
openssl pkey -in deploy/keys/jwt-private.pem -pubout -out deploy/keys/jwt-public.pem
|
||||
echo "已生成 deploy/keys/jwt-public.pem"
|
||||
|
||||
if [ ! -f .env ]; then
|
||||
{
|
||||
echo "PATBOND_DB_PASSWORD=$(openssl rand -hex 16)"
|
||||
echo "PATBOND_INTERNAL_TOKEN=$(openssl rand -hex 32)"
|
||||
} > .env
|
||||
echo "已生成 .env(随机 DB 口令与内部令牌)"
|
||||
fi
|
||||
|
||||
# 容器内以 uid 10001 运行,密钥需可读
|
||||
chmod 644 deploy/keys/jwt-public.pem deploy/keys/jwt-private.pem
|
||||
echo "OK:deploy/keys/ 与 .env 就绪(均已被 .gitignore 忽略)"
|
||||
Reference in New Issue
Block a user