使用Docker Compose部署应用报错:无法访问jarfile api-0.0.1-SNAPSHOT.jar
问题解决:Docker部署报错"Error: Unable to access jarfile api-0.0.1-SNAPSHOT.jar"
问题原因分析
你的配置存在两个核心问题导致jar包无法被找到:
- 挂载卷覆盖容器目录:docker-compose.yml中配置的
volumes: - ./app:/app会将宿主机当前目录下的./app文件夹挂载到容器的/app目录,直接覆盖了Dockerfile中复制到/app的jar包。若宿主机的./app为空,容器内自然找不到目标jar文件。 - 启动命令被覆盖:docker-compose里的
command: tail -f /dev/null会替换Dockerfile中定义的ENTRYPOINT,即便jar包存在,容器也不会执行启动jar的命令。
修复步骤
1. 修改docker-compose.yml配置
更新后的配置如下:
version: '3.8' services: webserver: build: . ports: - "9090:8080" # 移除覆盖/app目录的挂载卷,若需挂载日志等文件,改为挂载子目录 # 示例:- ./logs:/app/logs restart: always # 移除覆盖ENTRYPOINT的command配置
2. 重新部署容器
执行以下命令清理旧容器并重新构建启动:
docker compose down docker compose up -d --build
3. 验证部署结果
查看容器日志确认应用是否正常启动:
docker compose logs webserver
额外验证(可选)
若要确认Dockerfile本身是否能正确生成包含jar的镜像,可单独构建并测试:
docker build -t my-api-image . docker run --rm my-api-image
如果该命令能正常输出应用启动日志,说明Dockerfile的构建流程无问题,问题确实出在docker-compose的配置上。
内容的提问来源于stack exchange,提问作者kwangkyu
相关产品推荐
相关产品推荐

