Docker 部署Spring Boot、Spring Cloud构建的jar包

安装docker

方法一

找一个无人的角落……新建一个文件夹,切记切记,这个文件夹千万不要有其他任何没有关联的文件,因为这个文件夹的所有文件都会被打包到镜像中。

mkdir /home/yu/jar

把你的test.jar包复制到这个文件夹

mv nimeide.jar /home/yu/jar/test.jar

新建一个Dockerfile文件,注意,不要改名

vi Dockerfile

给Dockerfile文件写点暗号

FROM openjdk:8
MAINTAINER nierdaye
ADD test.jar demo.jar
EXPOSE 80
ENTRYPOINT ["java","-jar","demo.jar"]

暗号解释

​//引用公共仓库的openjdk镜像,版本号是8,如果不清楚这个镜像在不在,可以跑命令docker search xxx自己搜一下看看有没有你想要的镜像
FROM openjdk:8

//声明作者是你二大爷
MAINTAINER nierdaye

//就是把文件塞镜像里面,test.jar是外面的文件,demo.jar是镜像里面的文件名,这里不带目录的话就是放在根目录,你也可以改成带目录的形式,如:ADD /home/yu/jar/test.jar /home/nimei/demo.jar。
ADD test.jar demo.jar

//程序运行的端口号
EXPOSE 80

//这一句就是运行程序的代码了,如果你需要jvm加上啥参数的话或者是启动的时候需要带什么格式的命令之类的,均可以加这里,同时也需要注意后面jar包的路径,建议是写成绝对路径
ENTRYPOINT ["java","-jar","demo.jar"]

保存好文件之后,在本路径运行命令

//java-demo是镜像名称,1.0.0是版本号,中间用冒号隔开,最后面的点表示的是这个Dockerfile配置文件在当前目录
docker build -t java-demo:1.0.0 .

不报错就是成功了,可以运行一下docker images命令查看本地的镜像列表,就看到了

这个镜像是已经可以用的了,把这个镜像传到你的服务器,直接用就可以用了

也可以直接跑一下试试效果

-d 后台运行
--name 项目名称
-p 端口映射,外面的8080映射到里面的80 
java-demo 镜像名称

docker run -d --name haha -p 8080:80 java-demo

跑起来直接就是可以了

方法二(不推荐)

搜索java镜像,这里用的是官方仓库(说出来比较丢人,主要是还没学会怎么切仓库)

docker search java

把java镜像拉取下来

docker pull java

不报错的话就下载到本地了,查看一下本地镜像库的列表

docker images

然后把我们要运行的test.jar包复制到目录:/home/yu

docker run -d --restart=always -p 9899:9899 -v /home/yu:/home/jar --name test-name java /usr/bin/java -jar /home/jar/test.jar

命令解析

docker run
-d --restart=always
//映射端口号
-p 9899:9899  
//挂载主机目录,/home/yu是安装docker的这台机器的路径,即主机的目录,/home/jar是docker内部的路径,映射了之后,就是docker里面访问的/home/jar这个目录,其实访问的是主机的/home/yu目录
-v /home/yu:/home/jar
//给项目起一个名字
--name test-name 
//运行jar的命令(由于没设置环境变量)
java /usr/bin/java -jar /home/jar/test.jar

看一下当前的docker列表

docker ps -a

看到状态是UP,证明已经跑起来了,访问一下IP:9899端口,应该是可以访问到你的程序了。

我们可以进入到docker里面看看里面的情况。

docker exec -it test-name /bin/bash

进去之后,可以打开/home/jar目录,在对比外面的/home/yu目录,就会发现,他两的内容是一样的,这里要注意的是,目录是映射的,并非复制,即你在docker的/home/jar目录删除文件,出来了到/home/yu目录发现文件也是不在了的。

退出docker空间

exit

停止test-name这个任务

docker stop test-name

启动test-name这个任务

docker start test-name

启动了之后发现,程序已经自动启动起来了,可以直接调用。

但是这种有风险,如果你环境发生了变化,你挂载的路径无法访问,基本上就凉凉了。

猜你喜欢

转载自blog.csdn.net/qq_33601179/article/details/122513775