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