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

Spring Boot Docker部署问题:docker-compose up -d执行失败(mvnw未找到)

问题

执行docker-compose up -d部署Spring Boot应用时出现以下错误:

=> ERROR [build 4/6] RUN ./mvnw dependency:resolve                                                                                                                                0.9s 
------
 > [build 4/6] RUN ./mvnw dependency:resolve:
#0 0.230 /bin/sh: 1: ./mvnw: not found
------
failed to solve: executor failed running [/bin/sh -c ./mvnw dependency:resolve]: exit code: 127

相关配置文件

Dockerfile

# Stage 1: Build stage
FROM openjdk:17-jdk-slim AS build

# Copy Maven files for dependency resolution
COPY pom.xml mvnw ./
COPY .mvn .mvn

# Resolve project dependencies
RUN ./mvnw dependency:resolve

# Copy application source code
COPY src src

# Package the application
RUN ./mvnw package

# Stage 2: Run stage
FROM openjdk:17-jdk-slim

# Set working directory
WORKDIR ays-be

# Copy the JAR file from the build stage
COPY --from=build target/*.jar /app/ays-be.jar

# Expose port 9790
EXPOSE 9790

# Set the entrypoint command for running the application
ENTRYPOINT ["java", "-jar", "/app/ays-be.jar"]

docker-compose.yml

version: "3.9"
services:
  mysql:
    image: mysql:8.0
    container_name: ays-db
    environment:
      MYSQL_DATABASE: ays
      MYSQL_USER: ays
      MYSQL_PASSWORD: ayspass
      MYSQL_ROOT_PASSWORD: ayspass
      MYSQL_ROOT_HOST: '%'
      MYSQL_PORT: 3306
    volumes:
      - db-data:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - ays

  ays-be:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ays-be
    ports:
      - "9790:9790"
    depends_on:
      - mysql
    environment:
      - SPRING_PROFILES_ACTIVE=development
      - AYS_DB_USERNAME=ays
      - AYS_DB_PASSWORD=ayspass
      - AYS_DB_URL=jdbc:mysql://mysql:3306/ays
    networks:
      - ays


# Volumes
volumes:
  db-data:

networks:
  ays:

解决方法

1. 确认本地存在Maven wrapper文件

检查项目根目录下是否有mvnw脚本和.mvn文件夹,若缺失,执行以下命令生成(需本地安装Maven):

mvn wrapper:wrapper

2. 给mvnw添加执行权限

容器内默认没有mvnw的执行权限,修改Dockerfile构建阶段,在执行mvnw命令前添加权限设置:

# Copy Maven files for dependency resolution
COPY pom.xml mvnw ./
COPY .mvn .mvn

# 赋予mvnw执行权限
RUN chmod +x ./mvnw

# Resolve project dependencies
RUN ./mvnw dependency:resolve

3. 检查文件复制路径

确保docker-compose.yml中build.context: .指向的是项目根目录(即包含pom.xml、mvnw的目录),若Dockerfile不在根目录,需调整context路径或复制命令。

4. 修复Windows换行符问题

如果是Windows环境开发,mvnw脚本的换行符可能是CRLF,而Linux容器仅识别LF:

  • 用VS Code等编辑器打开mvnw,右下角切换换行符为LF
  • 或设置Git自动转换:git config --global core.autocrlf input

内容的提问来源于stack exchange,提问作者Sercan Noyan Germiyanoğlu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:53:08