Docker部署Jar包程序
Docker部署Jar包程序
Docker环境及部署
Docker
要求CentOS
系统的内核版本在 3.10
以上 ,查看本页面的前提条件来验证当前CentOS
版本是否支持 Docker
# 1、通过uname -r命令查看当前的内核版本
uname -r
# 2、 使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update
# 3、 卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
# 4、 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 5、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 6、 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
# 7、 安装docker
yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
# 8、 启动并加入开机启动
systemctl start docker.service && systemctl enable docker.service
# 9、 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
构建Jar包Docker镜像
1、将jar包上传linux服务器/usr/local/aip目录,在jar包所在目录创建名为Dockerfile的文件
2、在Dockerfile中添加以下内容
vim /usr/local/aip/Dockerfile
# 指定java8环境镜像
FROM java:8
# VOLUME指向了一个/usr/local/aip的目录,就是在主机的/usr/local/aip目录下创建了一个临时文件,并连接到容器的/usr/local/aip。
VOLUME /usr/local/aip
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 复制 jar (gm-aip-srv-pages-0.0.1-SNAPSHOT.jar) 到容器中并命名为aip-pages.jar
ADD gm-aip-srv-pages-0.0.1-SNAPSHOT.jar /aip-pages.jar
# 声明启动端口号
EXPOSE 8080
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/aip-pages.jar"]
命令的相关解释:
从docker仓库获取openjdk作为我们项目的容器
VOLUME指向了一个/usr/local/aip的目录,就是在主机的/usr/local/aip目录下创建了一个临时文件,并连接到容器的/usr/local/aip。
项目的gm-aip-srv-pages-0.0.1-SNAPSHOT.jar作为aip-pages.jar添加到容器。
ENTRYPOINT 执行项目 aip-pages.jar
# from java:8 拉取一个jdk为1.8的docker image;
# gm-aip-srv-pages-0.0.1-SNAPSHOT.jar 就是你上传的jar包,替换为jar包的名称;
# aip-pages.jar 是你将该jar包重新命名为什么名称,在容器中运行;
# expose 该容器暴露的端口是多少,就是jar在容器中以多少端口运行;
# entrypoint 容器启动之后执行的命令,java -jar aip-pages.jar即启动jar.
构建Docker镜像、运行镜像容器
构建镜像
# Docker镜像构建格式: docker build -t 镜像名称 Dockerfile的相对位置 -t 参数是指定镜像的 tag 名
[root@GM-YX-170.74 /usr/local/aip]# docker build -t docker-test .
Sending build context to Docker daemon 88.22MB
Step 1/5 : FROM java:8
---> d23bdf5b1b1b
Step 2/5 : VOLUME /usr/local/aip
---> Running in 6b1c731131f5
Removing intermediate container 6b1c731131f5
---> 3aaec7c6f0ce
Step 3/5 : ADD gm-aip-srv-pages-0.0.1-SNAPSHOT.jar /aip-pages.jar
---> d6d587f9eabf
Step 4/5 : EXPOSE 8080
---> Running in 7ff2d740b056
Removing intermediate container 7ff2d740b056
---> b207528b357c
Step 5/5 : ENTRYPOINT ["java","-jar","/aip-pages.jar"]
---> Running in 1303c59edeb4
Removing intermediate container 1303c59edeb4
---> ffd4a1bba530
Successfully built ffd4a1bba530
Successfully tagged docker-test:latest
# 查看构建镜像是否成功
[root@GM-YX-170.74 /usr/local/aip]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-test latest ffd4a1bba530 10 seconds ago 731MB
java 8 d23bdf5b1b1b 4 years ago 643MB
运行镜像文件:
docker run -p 8080:8080 docker-test:latest &
检查容器是否启动成功:
[root@GM-YX-170.74 /usr/local/aip]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f0be9d71adc docker-test:latest "java -jar /aip-page…" 3 hours ago Up 3 hours 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp determined_brown
访问测试: