使用Docker运行SpringBoot的WEB应用程序(从生成jar包到运行)
1、IDEA中SpringBoot导出jar包
在IDEA最右边选择maven选项->选中你的工程->Lifecycle->package如下图所示:
点击package后maven项目会进行打包操作,最后生成jar包。
上图截图中写出了生成的jar包的位置。
2、将生成的jar包上传到服务器
(若生成的jar包和运行服务器在同一台主机上,则可以省略该步骤)此处采用scp指令进行复制,scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。代码实现如下所示:
scp -r E:\Code\Java\canteenmanage\target\canteen.jar aaa@qq.com:/usr/zhiqiangw
其中E:\Code\Java\canteenmanage\target\canteen.jar 是指本地打包生成的jar包的路径,aaa@qq.com分别指登陆用户名和服务器的IP,/usr/zhiqiangw 是指复制文件需要放到的位置。
经过上述命令可以将canteen.jar上传到114.116.7.87服务器的/usr/zhiqiangw路径下。
3、使用Dockerfile构建镜像
下面操作时在服务器中的操作,可以通过ssh等进行登陆
ssh 用户名@ip
1、首先jar包的执行需要jre,所以先下载带有jre的镜像作为基础镜像:
docker pull openjdk:8u212-jre-alpine
注意docker的执行需要root权限或docker用户组权限,可以将用户用户加入docker用户组便于操作:下述代码的作用就是将用户名指定的用户加入docker用户组,处于docker用户组的用户又权限执行docker操作
usermod -aG docker 用户名
2、编写Dockerfile
如下所示
FROM openjdk:8u212-jre-alpine
#创建工作目录
WORKDIR /home/web
#将文件复制到镜像中
COPY canteen.jar /home/web/canteen.jar
#运行命令
CMD ["java","-jar","/home/web/canteen.jar"]
主要COPY canteen.jar /home/web/canteen.jar
这样写则需要运行的jar包要于Dockerfile文件放在同一个目录下,目录结构如下所示:
3、执行docker build 构建镜像
docker build -t canteen_web .
执行改代码时应在Dockerfile所在的目录下,并且不要忘记最后一个.
这个.
的意思时当前文件夹下的所有内容。
4、通过刚才生成的镜像构建容器
docker run --name canteen_web -d -p 8080:8080 926a17ced220
注意:
(1)926a17ced220是指刚才通过Dockerfile构建的镜像。
(2)-p 8080:8080 不要忘记使用-p打开端口映射,也可以使用-P参数打开所有的端口映射。
(3)-d代表是以守护进程的形式执行容器,即容器一直会执行不会进入后台。
容器执行完之后就可以通过浏览器访问jar包对应的web应用程序