引入一个新的多阶段 `Dockerfile.build`,用于将 Flutter 前端和 Spring Boot 后端的构建过程整合到单个 Docker 镜像中。 - 第一阶段使用 Flutter 镜像构建 Web 静态资源。 - 第二阶段使用 Maven 镜像编译 Java 后端应用。 - 最终阶段将前两阶段的产物(Web 资源和 JAR 包)复制到一个精简的 JRE 基础镜像中,以创建最终的运行时镜像。 此变更简化了部署流程,并显著减小了最终生产镜像的体积。`docker-compose.yml` 已同步更新以使用此新的构建文件。
48 lines
1.3 KiB
YAML
48 lines
1.3 KiB
YAML
version: "3.8"
|
||
|
||
services:
|
||
mongo:
|
||
image: mongo:6.0
|
||
container_name: ainoval-mongo
|
||
restart: unless-stopped
|
||
# dev 开发模式:不启用认证(不要设置 MONGO_INITDB_*),首次启动请清空数据卷
|
||
volumes:
|
||
- mongo-data:/data/db
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "mongosh --quiet --eval \"db.adminCommand('ping').ok\" || exit 1"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
start_period: 5s
|
||
|
||
ainoval:
|
||
image: ainoval/ainoval-server:latest
|
||
build:
|
||
context: ..
|
||
dockerfile: open/Dockerfile.build
|
||
container_name: ainoval-server
|
||
env_file:
|
||
- ./production.env
|
||
environment:
|
||
- SPRING_PROFILES_ACTIVE=dev
|
||
- JVM_XMS=${JVM_XMS:-512m}
|
||
- JVM_XMX=${JVM_XMX:-512m}
|
||
# 覆盖 dev 配置中的 localhost,直接指向 compose 中的 mongo 服务
|
||
- SPRING_DATA_MONGODB_URI=${SPRING_DATA_MONGODB_URI:-mongodb://mongo:27017/ainovel}
|
||
- STORAGE_PROVIDER=${STORAGE_PROVIDER:-local}
|
||
- AINOVEL_STORAGE_TEST_ON_STARTUP=${AINOVEL_STORAGE_TEST_ON_STARTUP:-false}
|
||
- PROXY_ENABLED=${PROXY_ENABLED:-false}
|
||
ports:
|
||
- "18080:18080"
|
||
volumes:
|
||
- ./logs:/var/log/ainoval
|
||
restart: unless-stopped
|
||
depends_on:
|
||
mongo:
|
||
condition: service_healthy
|
||
|
||
volumes:
|
||
mongo-data:
|
||
|
||
|