Skip to content

Docker Compose 挂载 JAR 包运行完整教程

复制就能用docker-compose.yml 方案,用挂载本地 JAR 包**的方式运行 Java 应用,不用重新构建镜像,修改 JAR 后直接重启容器即可生效。

一、项目目录结构(必须按这个放)

项目文件夹/
├── docker-compose.yml   # 编排文件
└── app.jar              # 你的 Java 可执行 JAR 包

二、完整 docker-compose.yml(推荐版本)

这是最通用、稳定、生产可用的版本:

yaml

services:
  java-app:
    # 官方 OpenJDK 轻量级镜像(JRE 足够运行 JAR)
    image: openjdk:17-jre-slim
    # 容器名称
    container_name: my-java-app
    # 挂载本地 JAR 到容器内(核心!修改本地 jar 容器自动生效)
    volumes:
      - ./app.jar:/app/app.jar
    # 工作目录
    working_dir: /app
    # 启动命令:运行 JAR
    command: ["java", "-jar", "app.jar"]
    # 端口映射(宿主机:容器)
    ports:
      - "8080:8080"
    # network_mode: host
    # extra_hosts:
      # - "host.docker.internal:host-gateway"
    # 开机自启
    restart: always
    # 环境变量(可选,SpringBoot 专用)
    # environment:
      #- TZ=Asia/Shanghai
      #- SPRING_PROFILES_ACTIVE=prod

三、启动命令

进入目录执行:

bash
# 后台启动
docker compose up -d --build

# 查看日志
docker compose logs -f

# 停止
docker compose down

四、关键说明(必看)

  1. 挂载原理

    • ./app.jar:/app/app.jar:把本地当前目录的 JAR 映射到容器内部,本地修改 JAR,容器直接读取最新版
    • 不用构建 Dockerfile,不用重新打包镜像
  2. JDK 版本选择

    • 你的项目是 JDK 8 → 用 openjdk:8-jre-slim
    • JDK 11 → openjdk:11-jre-slim
    • JDK 17 → openjdk:17-jre-slim
  3. 端口修改

    • 如果你的项目端口是 9090,把 ports 改成:
      yaml
      ports:
        - "9090:9090"
  4. JVM 内存配置(推荐加上) 防止内存溢出,在 command 中添加:

    yaml
    command: ["java", "-Xms256m", "-Xmx512m", "-jar", "app.jar"]

五、常见问题

  1. 启动报错找不到 app.jar

    • 检查 JAR 文件名必须是 app.jar
    • 检查 docker-compose.yml 和 JAR 在同一级目录
  2. 端口被占用

    • 修改宿主机端口,例如 8081:8080
  3. SpringBoot 配置文件挂载 如果你想挂载 application.yml

    yaml
    volumes:
      - ./app.jar:/app/app.jar
      #- ./application.yml:/app/application.yml

总结

  1. docker-compose.ymlapp.jar 放在同一目录
  2. 执行 docker-compose up -d 即可运行
  3. 本地更新 JAR 后,执行 docker-compose restart 就能生效
  4. 不用构建镜像,纯挂载运行,开发/测试非常方便
/src/technology/dateblog/2026/05/20260512-docker-compose-yml-%E6%8C%82%E8%BD%BDjar%E5%8C%85%E8%BF%90%E8%A1%8C.html