使用 docker-compose 工具构建spring boot的docker服务(java17+mysql)

1 先安装安装docker-compose
参考文章:https://xr.ssword.cn/article/detail?id=1904005580834557953

2 新建一个docker-compose.yml文件,示例内容如下:

services:
  # --- Spring Boot 应用服务 ---
  xitemapp:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: xitem-app
    restart: always
    ports:
      - "9095:9095"  # 映射端口:宿主机端口:容器端口
    environment:
      # 核心配置:使用服务名 'mysql' 作为主机名,Docker 会自动解析
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/xitemtask?serverTimezone=Asia/Shanghai&useUnicode=true
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=secret123
      # 指定激活的配置环境
      - SPRING_PROFILES_ACTIVE=prod
    depends_on:
      - mysql  # 确保 mysql 服务先启动
    networks:
      - xitem-network

  # --- MySQL 数据库服务 ---
  mysql:
    image: mysql:8.0
    container_name: mysql-db
    restart: always
    ports:
      - "3306:3306" # 方便本地 Navicat/DBeaver 连接,生产环境建议关闭!!!
    environment:
      - MYSQL_ROOT_PASSWORD=secret123
      - MYSQL_DATABASE=xitemtask  # 自动创建数据库
    volumes:
      # 数据持久化:防止容器删除后数据丢失
      - ./mysql/data:/var/lib/mysql
      # 初始化脚本:放入此目录下的 .sql 文件会在首次启动时自动执行(宿主的./mysql/data为空时才执行)
      - ./mysql/init:/docker-entrypoint-initdb.d
    networks:
      - xitem-network

# --- 网络配置(xitem-network 对应于容器配置中的 networks 属性) ---
networks:
  xitem-network:
    driver: bridge

3 新建一个Dockerfile,用于构建spring boot的容器,示例内容如下:

# 使用 OpenJDK 17 作为基础镜像 (根据你的 JDK 版本调整)
FROM eclipse-temurin:17-jdk-jammy

# 设置工作目录(指定接下来的动作,都在容器的哪个目录下进行)
WORKDIR /app

# 复制构建好的 jar 包 (COPY后面,第一个参数是宿主机的文件路径)
COPY ./myapp.jar app.jar

# 暴露端口 (与 application.yml 中的端口一致)
EXPOSE 9095

# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]

 

4 使用docker-compose工具进行构建

4.1 在宿主机中,单独新建一个目录,如 xitem_docker 目录,然后把 docker-compose.yml、Dockerfile放进来。
4.2 在 xitem_docker 目录中,新建 ./mysql/data 和 ./mysql/init 目录,然后把数据库初始sql放到./mysql/init中,保持./mysql/data目录为空。
4.3 执行构建命令:
docker-compose up -d --build

-d: 后台运行。
--build: 强制重新构建镜像(docker-compose.yml中,配置有 build 信息的,会被重新构建,比如示例中,我们的 xitemapp)

如果启动失败,可以通过以下命令查看 Spring Boot 的启动日志(xitemapp是配置文件中的应用名称):
docker-compose logs -f xitemapp

点击数:14
创建时间:2026-04-18 17:06:48
更新时间:2026-04-18 19:03:17