# 只部署应用本身;Redis 已在宿主机 Docker 中运行,MySQL 暂不需要。 services: app: build: context: . dockerfile: Dockerfile image: dev-toolbox:latest container_name: dev-toolbox restart: unless-stopped ports: - "8077:8077" environment: # 激活生产 profile(info 日志、关闭 H2 控制台) SPRING_PROFILES_ACTIVE: prod # Redis:容器内通过 host.docker.internal 访问宿主机上已发布的 6379 # 前提:宿主机运行的 Redis 容器已把端口映射出来(docker run 时带 -p 6379:6379) REDIS_HOST: host.docker.internal REDIS_PORT: "6379" REDIS_PASSWORD: "" REDIS_DATABASE: "0" # 项目暂未使用数据库,用 H2 内存库避免依赖 MySQL;将来接入 MySQL 时删掉这三行, # 改用 MYSQL_HOST/MYSQL_PORT/MYSQL_DATABASE/MYSQL_USERNAME/MYSQL_PASSWORD 即可 SPRING_DATASOURCE_DRIVER_CLASS_NAME: org.h2.Driver SPRING_DATASOURCE_URL: "jdbc:h2:mem:dev_toolbox;MODE=MySQL;DB_CLOSE_DELAY=-1;DATABASE_TO_LOWER=TRUE" SPRING_DATASOURCE_USERNAME: sa SPRING_DATASOURCE_PASSWORD: "" # 聚合数据 key:如需覆盖 yml 里的默认值,取消注释并填写(或写在同目录 .env 文件里) # JUHE_WEATHER_KEY: "" # JUHE_SOUP_KEY: "" TZ: Asia/Shanghai # 让容器能通过 host.docker.internal 访问宿主机(Linux 上必需) extra_hosts: - "host.docker.internal:host-gateway" # 内存硬限制:4H4G 机器上给 app 1G 足够(堆 512m + 堆外/线程/元空间等)。 # 配合 Dockerfile 里的 -Xmx512m,触顶会被 cgroup OOM kill,让 Docker 重启。 # 调整 JVM 堆:覆盖 JAVA_OPTS 环境变量即可,无需改 Dockerfile mem_limit: 1024m mem_reservation: 512m