You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker Compose中运行Java应用?附我的docker-compose.yaml配置

使用Docker Compose部署Java应用+MySQL环境

我来帮你完善并优化你的Docker Compose配置,同时把关键要点解释清楚,确保你的Java应用能顺利连接MySQL并正常运行。

完整的docker-compose.yaml配置

version: '3.3'
services:
  db:
    container_name: dbContainer
    image: mysql:5.7
    volumes:
      - /home/crismon-01/Documenti/TESI/Docker/mysqlLogin/datas:/var/lib/mysql
    ports:
      - "3306:3306"  # 明确映射宿主机端口,方便本地用客户端连接数据库
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "root"
      MYSQL_DATABASE: "schema1"
    restart: always  # 数据库意外退出后自动重启,保证服务稳定性

  java:
    container_name: loginJava
    image: openjdk:7
    depends_on:
      - db
    volumes:
      - /home/crismon-01/Documenti/TESI/Docker/mysqlLogin:/usr/src/myapp  # 用绝对路径挂载你的代码目录,去掉多余的./
    working_dir: /usr/src/myapp
    command: bash -c "javac YourMainClass.java && java YourMainClass"  # 替换成你的主类文件名,完成编译+运行流程
    restart: on-failure  # Java应用运行失败时自动重启

关键配置细节说明

MySQL服务部分

  • ports: "3306:3306":把宿主机的3306端口和容器的3306端口绑定,这样你本地的MySQL客户端就能直接连接容器里的数据库了,方便调试。
  • restart: always:这个配置很实用,能保证数据库容器在意外停止(比如宿主机重启)后自动启动,避免手动干预。
  • 你已经配置好了初始数据库schema1和账号密码,Java应用连接时直接用这些参数就行。

Java服务部分

  • depends_on: [db]:这个配置能让Java容器在MySQL容器启动之后再启动,但要注意——它只保证启动顺序,不保证MySQL服务完全就绪(比如数据库初始化完成)。如果你的Java应用启动时会立刻连接数据库,可能需要加个等待逻辑(后面会说)。
  • 卷挂载:把你的本地Java代码目录挂载到容器内的/usr/src/myapp,这样容器里能直接访问你的代码,不用每次修改都重新构建镜像。
  • command:你之前的命令没写完,这里补充了完整的编译运行流程。如果你的代码已经打包成jar包,直接把命令改成java -jar YourApp.jar就行,记得替换成实际的jar文件名。

必看注意事项

  1. 数据库连接地址:Java应用里的JDBC连接URL一定要写成jdbc:mysql://db:3306/schema1,这里的db是Docker Compose中MySQL服务的名称,容器之间通过服务名互相通信,不能用localhost(localhost在容器里指的是容器自己)。
  2. JDK版本匹配:你用的是OpenJDK7,如果你的Java代码是基于JDK8及以上版本写的,一定要换成对应的镜像,比如openjdk:8、openjdk:11,不然会出现编译或运行错误。
  3. 等待MySQL就绪:如果你的Java应用启动时会立即连接数据库,建议在command里加个简单的等待,比如:
    command: bash -c "sleep 10 && javac YourMainClass.java && java YourMainClass"
    
    要是想更可靠,可以用wait-for-it工具(需要在容器内先安装),它会等待MySQL端口开放后再执行后续命令。

内容的提问来源于stack exchange,提问作者Cristian Monti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:53:28