清单:
- 安装有docker的Linux
- springboot打包的jar文件(该项目只有一个返回"hello world"接口)
Linux的IP地址:192.168.221.129
springboot项目的接口:
1、上传jar文件至Linux
我上传的位置为:/root/dockerJar,如下:
2、编辑dockerfile文件
vi dockerfile
填入一下信息:
FROM openjdk:8
EXPOSE 8080
WORKDIR /root
ADD helloworld*.jar /root/app.jar
ENTRYPOINT ["java","-jar","/root/app.jar"]
解释:
- FROM openjdk:8 :引用jdk8镜像
- EXPOSE 8080 :开放8080端口,因为我的jar项目使用的是8080端口
- WORKDIR /root:指定docker的工作目录,用来存放jar文件
- ADD helloworld*.jar /root/app.jar:添加文件,把dockerfile当前目录下的helloworld开头的jar文件(相对路径),映射至docker镜像中的的/root/app.jar文件
- ENTRYPOINT ["java","-jar","/root/app.jar"]:启动命令,相当于“java -jar /root/app.jar”
注意:
ADD时,格式为:
ADD 宿主文件的相对于dockerfile的相对路径 docker镜像中的工作路径
我的文件结构如下:
那么就为:ADD helloworld*.jar /root/app.jar
这里只能填写相对路径,绝对路径会失败
3、构建镜像
docker build -t helloworld .
注意:
① 后面有一个点
点的作用:表示dockerfile的路径,因为我是在dockerfile文件的当前目录构建镜像的,所以用"."表示
② helloworld :表示生成镜像的名字
如下:
4、查看docker中的镜像
docker images
如下,镜像已生成:
5、启动镜像
docker run -d --name helloworld-1 -p 8080:8080 helloworld
解释:
docker run:运行镜像的命令
-d:表示后台启动运行的方式
helloworld-1:表示镜像运行后生成的容器名称
-p 8080:8080:映射Linux宿主的8080端口与docker容器中的8080端口相通
helloworld:镜像的名称
如下:
使用下面命令查看正在运行的容器:
docker ps
发现容器已运行:
6、访问项目
注意:需要关闭下Linux的防火墙或者开放8080端口,不然会访问失败
开放防火墙:
systemctl stop firewalld
使用浏览器访问:
http://192.168.221.129:8080/test
结果如下: