首先确保SpringBoot项目在本地可以运行,这里我使用的很简单的项目,运行没问题之后使用Maven进行打包。idea右侧的工具栏。
打包成功之后可以在target目录下看到生成对应的jar包,如图。
把这个文件复制到和项目名同路径下,再创建一个Dockerfile文件,Dockerfile文件名大小写一定要保持一致,如图。
Dockerfile文件中需要写的内容,如图:
直接复制过去就可以,配置很简单,通过这个文件可以自己制作镜像。
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
这里需要注意一点,我在写CMD后面的内容的时候,以为里面的内容是随便写的注释,为了对齐,我写成了这样:
以至于我在用curl连接时出现了端口访问被拒绝的情况,说:curl: (7) Failed to connect to localhost port 49157: Connection refused。打包完毕,文件书写完毕之后,算是本地工作准备结束。接下来在服务器上创建一个文件夹专门用来存储jar包和Dockerfile文件,名字随意。如图。
接下来在本地打开jar包和Dockerfile文件所在路径,将文件传到服务器上,可以使用Xftp也可以使用FinallShell,我觉得FinallShell比较方便一些。如图。
进入到刚刚在服务器上创建的文件的目录,执行命令:
这里需要注意,wcltest01是生成的镜像的名字,不可以有大写字母,后面还有一个点,千万不要忘记。docker会分层执行Dockerfile里的内容。
接着可以使用docker images命令查看所生成的镜像。
接下来创建容器
-d:后台运行
-p:指定端口
-P:不指定端口
–name:给容器取名字
执行完该命令后可以使用docker ps查看容器情况
此时可以看到该容器已经正常运行,现在可以使用curl进行连接,端口使用的是你指定的端口号
最开始访问端口的时候说页面未找到说明已经访问成功了,我这里写了个hello的action做测试用的,加上之后也可以正常输出内容。
大功告成!
但是有时候用curl访问的时候可能会报这个错:
curl: (56) Recv failure: connection reset by peer
在端口号前面加上-v即可,意思是取消代理。