Docker Compose启动报错:Unable to access jarfile /app/app.jar求助
Docker部署中"Unable to access jarfile /app/app.jar"问题排查与解决
可能的原因及解决方法
1. 启动命令路径错误或未设置工作目录
- 确认Dockerfile里的
CMD/ENTRYPOINT命令是否正确指向目标路径:- 如果使用绝对路径,要确保拼写完全正确(Linux路径区分大小写,比如
/App/app.jar和/app/app.jar是不同路径),示例正确命令:CMD ["java", "-jar", "/app/app.jar"] - 或者先设置工作目录为
/app,再用相对路径调用,避免路径写错:WORKDIR /app CMD ["java", "-jar", "app.jar"]
- 如果使用绝对路径,要确保拼写完全正确(Linux路径区分大小写,比如
2. Jar文件权限不足
- 容器内的
app.jar可能没有可读权限,导致Java无法访问。执行以下命令检查权限:docker exec <容器ID或名称> ls -l /app/app.jar - 如果权限显示为
-rw-------或无读权限,在Dockerfile中添加权限设置:COPY app.jar /app/ RUN chmod +r /app/app.jar - 或者复制文件时指定所属用户,确保权限继承:
COPY --chown=root:root app.jar /app/
3. Docker Compose挂载配置覆盖了容器内文件
- 如果
docker-compose.yml中配置了本地目录挂载到/app/,比如:
本地目录如果没有volumes: - ./:/appapp.jar,会直接覆盖容器内的/app目录,导致找不到文件。 - 解决:只挂载需要的子目录(比如配置目录),避免覆盖整个
/app:volumes: - ./config:/app/config
4. 镜像构建缓存未更新
- 修改Dockerfile后如果没有重新构建镜像,容器可能还是使用旧镜像(旧镜像中
app.jar仍在根目录)。 - 解决:强制重新构建镜像再启动:
docker compose build --no-cache docker compose up
内容的提问来源于stack exchange,提问作者gf160
相关产品推荐
相关产品推荐

