以前我们部署项目
打包->传到服务器->java -jar运行
而且服务器还得先配置好java运行环境
现在,使用docker部署项目,只需要在项目中编写一个Dockerfile文件
在项目中创建一个Dockerfile文件,我这里就放到项目根路径下
那么Dockerfile改如何编写呢?下方命令中黑体部分是固定写法
首先第一步jar包运行肯定需要一个运行环境
FROM openjdk:8-jdk-slim
这个from后面怎么写,比如我现在用的java8,到docker hub网站中搜索jdk,点击第一个java进去,在tags标签页下面搜索8-jdk,找到一个linux的jdk,复制下面选中的这一块就可以
第二步写上作者
LABEL maintainer=vhukze
第三步复制jar包
大家都知道在docker中运行容器,本身是运行了小的linux系统。要运行这个jar包,linux中就得有这个jar包,使用copy命令把jar包复制到一个自定义路径下
我的Dockerfile文件放到了项目根路径下,跟target目录平级
COPY target/*.jar /main.jar
target目录下也就一个jar包,直接写*.jar,把jar包复制到了小linux中根路径下,名称为main.jar
第四步启动命令
上面复制完之后名称为main.jar,所以这里启动命令也是启动mian.jar
ENTRYPOINT ["java","-jar","/main.jar"]
构建镜像并启动
至此一个最简单的Dockerfile文件就编写完成了
全部内容如下
FROM openjdk:8-jdk-slim
LABEL maintainer=vhukze
COPY target/*.jar /main.jar
ENTRYPOINT ["java","-jar","/main.jar"]
接下来需要根据这个Dockerfile打包镜像
一般我们自己开发用的Windows电脑都没有安装docker,就需要把target文件夹和Dockerfile文件上传到安装好docker的服务器,在服务器上使用docker构建镜像
我这里在/usr/local下面创建了一个app文件夹
把target文件夹和Dockerfile文件上传到这里,target文件夹中只需要有一个jar包就行,其他文件都可以删掉
在这个目录执行下面命令
docker build -t java-test:v1.0 -f Dockerfile .
-t 后面是镜像名称和版本号
-f 是使用哪个Dockerfile文件,当前目录就有Dockerfile文件,所以这个参数也可以省略不写
命令最后有一个点(.),这个点表示在当前目录下工作(就是COPY命令在复制的时候以当前目录为基准,把当前目录下target文件夹中的所有jar包复制到容器的小Linux下)
执行命令后,等待构建完成
docker images查看镜像是否存在
启动容器 -d后台启动 -p使用8888端口并映射到主机8888端口
docker run -d -p 8888:8888 java-test:v1.0
等他启动完成,就可以访问了
启动好之后如果想查看运行日志
docker logs 容器ID
如果想在另一个服务器也部署一遍这个项目,应该怎么操作,当然不用再重复上面的操作,请移步下篇博文:docker<应用分享>--本地镜像上传dockerhub、从dockerhub拉取镜像