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

使用Docker Compose部署Spring Boot应用时出现no main manifest attribute错误

问题排查与修复方案

1. POM配置错误

(1)启动类全限定名拼写错误

你的<start-class>属性开头少了字母c,正确配置应为:

<start-class>com.springlearn.learnspringdb.UsermanagementApplication</start-class>

(2)重复配置Spring Boot Maven插件

你在<build><plugins>中重复声明了两次spring-boot-maven-plugin,会导致打包逻辑冲突,合并为单个配置即可:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${project.parent.version}</version>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2. Dockerfile缺失/配置错误

项目根目录需添加Dockerfile,确保正确构建可执行Jar并运行:

# 构建阶段:生成可执行Jar
FROM maven:3.8.5-openjdk-17 AS builder
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn clean package -DskipTests

# 运行阶段:启动应用
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY --from=builder /app/target/learnspringdb-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

注意:Jar包名称需与target目录下生成的文件一致,若有差异请自行修改。

3. Docker Compose配置错误

(1)MySQL端口映射错误

MySQL容器默认端口为3306,你的配置写错为3036,修正后:

ports:
  - "3307:3306"

(2)Spring数据源URL错误

容器内不能用localhost访问MySQL服务,需使用Docker Compose的服务名mysql,同时补充必要连接参数:

environment:
  SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/user_management?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
  SPRING_DATASOURCE_USERNAME: root
  SPRING_DATASOURCE_PASSWORD: password

(3)MySQL容器自动创建目标数据库

给MySQL服务添加MYSQL_DATABASE环境变量,启动时自动创建user_management数据库:

mysql:
  image: mysql:8.1.0
  ports:
    - "3307:3306"
  environment:
    MYSQL_ROOT_USER: root
    MYSQL_ROOT_PASSWORD: password
    MYSQL_DATABASE: user_management

4. 验证步骤

  1. 清理旧构建产物:mvn clean
  2. 重新打包:mvn package -DskipTests
  3. 启动容器:docker-compose up --build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:32:22