当我尝试构建这个Docker-Image时,我得到以下错误:
FROM java:8 WORKDIR /app ADD . /app EXPOSE 8080 RUN ./gradlew build CMD ./gradlew bootRun
当我使用“gradlew build”构建应用程序时,它可以运行,当我尝试在Mac上运行此Docker Image时,它也可以运行,只是不适用于Windows编辑:
kulphzqa1#
这不是一个很好的答案,但我发现当Windows从Windows将文件挂载到Docker时,它会在挂载的文件上留下类似Windows的行结束符。在Dockerfile中解决这个问题的一个简单方法是在容器中安装dos2unix并添加一个
RUN dos2unix gradlew
在执行构建过程之前。不幸的是,这是一个可怕的解决方案。希望即将发布的Docker for Windows on WSL2能更好地解决这个问题,但现在你只能使用这个简单的解决方案。
cgvd09ve2#
gradlew必须标记为可执行。chmod +x gradlewMac和Linux共享权限方案,但Windows需要使用虚拟FS,因此它使用默认权限复制文件- 644,而您需要755。
chmod +x gradlew
wfypjpf43#
对我有用,在dockerfile中,在RUN ./gradlew lib:build之前添加:
RUN ./gradlew lib:build
RUN apt-get update && \ apt-get install dos2unix && \ apt-get clean RUN dos2unix gradlew RUN chmod +x gradlew RUN ./gradlew lib:build
3条答案
按热度按时间kulphzqa1#
这不是一个很好的答案,但我发现当Windows从Windows将文件挂载到Docker时,它会在挂载的文件上留下类似Windows的行结束符。在Dockerfile中解决这个问题的一个简单方法是在容器中安装dos2unix并添加一个
在执行构建过程之前。不幸的是,这是一个可怕的解决方案。希望即将发布的Docker for Windows on WSL2能更好地解决这个问题,但现在你只能使用这个简单的解决方案。
cgvd09ve2#
gradlew必须标记为可执行。
chmod +x gradlew
Mac和Linux共享权限方案,但Windows需要使用虚拟FS,因此它使用默认权限复制文件- 644,而您需要755。
wfypjpf43#
对我有用,在dockerfile中,在
RUN ./gradlew lib:build
之前添加: