exec ./mvnw:在 Spring Boot 中运行 docker-compose up 后没有这样的文件或目录

问题描述 投票:0回答:1

我构建了一个 Spring Boot 应用程序。我正在学习码头工人。我的机器上运行 Windows 11 我尝试运行 docker-compose up 但找不到 ./mwnw.

另外两名开发人员共享相同的配置,并且应用程序正确启动(一名 Linux 用户和一名 Windows 用户)。从我这边来看,它失败并出现以下错误。

我读过这可能是 crlf 和 lf 之间的转换问题,但不确定。 我还拥有以下文件权限:

// ls -l
-rwxr-xr-x 1 olivi 197121 11598 Apr 16 17:53 mvnw
-rw-r--r-- 1 olivi 197121  7797 Dec 22 16:16 mvnw.cmd

任何帮助将不胜感激。

错误:

docker-compose.yaml:

version: '3.8'

services:
  db-mysql-mtgbox:
    container_name: db-mysql-mtgbox
    image: mysql
    restart: always
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: 'qwerty'
    ports:
      - ${MYSQL_PORT}
    volumes:
      - db-mysql-mtgbox:/var/lib/mysql
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - ${APP_PORT}
    environment:
      - SPRING_DATASOURCE_URL=${APP_SPRING_DATASOURCE_URL}
      - SPRING_DATASOURCE_USERNAME=${APP_SPRING_DATASOURCE_USERNAME}
      - SPRING_DATASOURCE_PASSWORD=${APP_SPRING_DATASOURCE_PASSWORD}
      - SPRING_JPA_HIBERNATE_DDL_AUTO=${APP_SPRING_JPA_HIBERNATE_DDL_AUTO}
      - JWT_SECRETKEY= ${JWT_SECRETKEY}
      - JWT_TOKEN_VALIDITYTIMEINMINUTE= ${JWT_TOKEN_VALIDITYTIMEINMINUTE}
    depends_on:
      - db-mysql-mtgbox
    volumes:
      - ..:/app
      - ~/.m2:/root/.m2

volumes:
  db-mysql-mtgbox:

Dockerfile:

FROM amazoncorretto:21
WORKDIR /app
CMD [ "./mvnw", "spring-boot:run" ]
spring-boot docker maven docker-compose
1个回答
0
投票

问题确实源于

crlf
中的
lf
/
./mwnw
转换。由于这个原因,该文件似乎无法读取。我必须将其从 DOS 格式转换为 Unix 格式才能解决该问题。虽然一些资源建议使用
dos2unix
unix2dos
工具,但我发现一个简单的在线转换器可以为我完成这项工作。希望这个解决方案可以帮助其他人。如果有人有更准确的解释,欢迎指正。

© www.soinside.com 2019 - 2024. All rights reserved.