问题起因
最近两天在使用docker把项目的jar包打成镜像,Dockerfile文件的内容如下
FROM java:8
ADD mhxysy-0.0.1-SNAPSHOT.jar mhxysy.jar
EXPOSE 8080
CMD java ‐jar mhxysy.jar
但是通过docker运行镜像的时候报错了
Error: Could not find or load main class ‐jar
如图
在portainer上编写docker-compose.yml启动也报一样的错
version: "3"
services:
mhxysy:
container_name: mhxysy
image: mhxysy-20230927hyl
ports:
- 8080:8080
如图,创建完stack之后,点击部署的时候是部署成功了,但是容器启动失败了
错误日志
奇怪的就是,通过命令启动jar包的时候能正常启动。
问题分析
遇到这种诡异的问题,推测大概率是Dockerfile文件有问题,可能包含了一些肉眼不可见的特殊字符。
解决方案
解决这个问题的最好方法就是重新写一遍Dockerfile文件里的内容,不要复制/粘贴。然后删除生成的镜像,重新打包一次。
docker build -t mhxysy-20230927hyl .