原文地址:http://blog.csdn.net/boling_cavalry/article/details/78991870
本章我们做个Docker镜像,今后用此镜像的容器运行springboot的jar包,再通过端口映射对外提供http服务;
本次实战的环境是Ubuntu16,安装的Docker版本是17.03.2-ce
制作镜像所需的材料很简单:jdk1.8安装包,此文件我已分割后上传到github上(由于github上传单个文件不能大于50M,所以只能分割后上传),地址是:https://github.com/zq2599/springbootrun,如下图,红框中的文件就是分割好的jdk1.8安装包:
Dockerfile内容如下,每行都有注释,就不再赘述了:
# Docker image for springboot file run
# VERSION 0.0.1
# Author: bolingcavalry
#基础镜像使用centos7
FROM centos:centos7
#作者
MAINTAINER BolingCavalry <zq2599@gmail.com>
#定义工作目录
ENV WORK_PATH /usr/local/work
#定义jdk1.8的文件夹
ENV JDK_PACKAGE_FILE jdk1.8.0_144
#定义jdk1.8的文件名
ENV JDK_RPM_FILE jdk-8u144-linux-x64.rpm
#yum更新
RUN yum -y update
#把分割过的jdk1.8安装文件复制到工作目录
COPY ./jdkrpm-* $WORK_PATH/
#用本地分割过的文件恢复原有的jdk1.8的安装文件
RUN cat $WORK_PATH/jdkrpm-* > $WORK_PATH/$JDK_RPM_FILE
#本地安装jdk1.8
RUN yum -y localinstall $WORK_PATH/$JDK_RPM_FILE
#暴露8080端口
EXPOSE 8080
将Dockerfile和JDK安装包的分割文件放在同一目录下,在此目录下执行如下命令:
docker build -t bolingcavalry/springbootrun:0.0.1 .
稍后即构建成功,如下图所示:
验证此镜像的方法是用该镜像启动一个容器,再运行一个spring boot工程试试;
docker run --name=test001 -p 8080:8080 -idt -v /usr/local/work/share:/usr/Downloads bolingcavalry/springbootrun:0.0.1
该容器启动后,8080端口被映射到前电脑的8080端口,目录/usr/Downloads被映射到当前电脑的/usr/local/work/share目录; 2. 执行docker ps命令看一下本机活跃容器,如下图,容器启动成功:
3. 您可以自己建一个spring boot的web工程,做个最简单的controller,再打包成jar文件,或者直接用我的git仓库中的springbootdemo-0.0.1-SNAPSHOT.jar文件(地址:https://github.com/zq2599/springbootrun),放入本机的/usr/local/work/share目录; 4. 执行docker exec -it test001 /bin/bash命令进入容器,再进入容器的/usr/Downloads目录,这个目录和当前电脑的/usr/local/work/share是映射关系,所以步骤3中复制的springbootdemo-0.0.1-SNAPSHOT.jar文件就在这个目录下了; 5. 执行命令java -jar springbootdemo-0.0.1-SNAPSHOT.jar,启动spring boot成功,如下图:
6. 我的电脑IP是192.168.119.155,所以用浏览器访问http://192.168.119.155:8080,看到如下信息表示服务正常:
以上就是springboot运行环境镜像的制作过程,您可以自己试着做出这个镜像文件,也可以直接使用bolingcavalry/springbootrun:0.0.1这个镜像,因为我已push到hub.docker.com上去了;