首先确保SpringBoot项目在本地可以运行,这里我使用的很简单的项目,运行没问题之后使用Maven进行打包。idea右侧的工具栏。

java代码启动exe java代码启动docker镜像失败_java代码启动exe


打包成功之后可以在target目录下看到生成对应的jar包,如图。

java代码启动exe java代码启动docker镜像失败_jar_02


把这个文件复制到和项目名同路径下,再创建一个Dockerfile文件,Dockerfile文件名大小写一定要保持一致,如图。

java代码启动exe java代码启动docker镜像失败_jar_03


Dockerfile文件中需要写的内容,如图:

java代码启动exe java代码启动docker镜像失败_docker_04


直接复制过去就可以,配置很简单,通过这个文件可以自己制作镜像。

FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

这里需要注意一点,我在写CMD后面的内容的时候,以为里面的内容是随便写的注释,为了对齐,我写成了这样:

java代码启动exe java代码启动docker镜像失败_java_05


以至于我在用curl连接时出现了端口访问被拒绝的情况,说:curl: (7) Failed to connect to localhost port 49157: Connection refused。打包完毕,文件书写完毕之后,算是本地工作准备结束。接下来在服务器上创建一个文件夹专门用来存储jar包和Dockerfile文件,名字随意。如图。

java代码启动exe java代码启动docker镜像失败_java代码启动exe_06

接下来在本地打开jar包和Dockerfile文件所在路径,将文件传到服务器上,可以使用Xftp也可以使用FinallShell,我觉得FinallShell比较方便一些。如图。

java代码启动exe java代码启动docker镜像失败_jar_07


进入到刚刚在服务器上创建的文件的目录,执行命令:

这里需要注意,wcltest01是生成的镜像的名字,不可以有大写字母,后面还有一个点,千万不要忘记。docker会分层执行Dockerfile里的内容。

java代码启动exe java代码启动docker镜像失败_java_08


接着可以使用docker images命令查看所生成的镜像。

java代码启动exe java代码启动docker镜像失败_java_09


接下来创建容器

-d:后台运行

-p:指定端口

-P:不指定端口

–name:给容器取名字

java代码启动exe java代码启动docker镜像失败_docker_10


执行完该命令后可以使用docker ps查看容器情况

java代码启动exe java代码启动docker镜像失败_docker_11


此时可以看到该容器已经正常运行,现在可以使用curl进行连接,端口使用的是你指定的端口号

java代码启动exe java代码启动docker镜像失败_docker_12


最开始访问端口的时候说页面未找到说明已经访问成功了,我这里写了个hello的action做测试用的,加上之后也可以正常输出内容。

大功告成!

但是有时候用curl访问的时候可能会报这个错:

curl: (56) Recv failure: connection reset by peer

java代码启动exe java代码启动docker镜像失败_docker_13


在端口号前面加上-v即可,意思是取消代理。