环境准备:
1. centOS 7
2. Docker 最新版本 18.06.0-ce
3. SpringCloud应用(boot)
Rancher是一个容器管理平台,其运行也是在Docker 容器中的,在Rancher 上面能可视化的添加、管理生产环境中使用的容器编排框架,例如K8S,还可以管理每个容器。
一、 在centOS 中安装Docker
使用命令: curl https://get.docker.com | sh 可以直接获取最新的Docker 版本进行安装,该命令安装之后Docker的默认路径在 /var/lib/docker 下面,安装好后Docker就默认已经启动了。可以通过 sudo service docker status 命令查看Docker 的状态, sudo docker info 查看Docker 的详细信息。
二、 安装Rancher
Rancher也是运行在容器中的,所以可以直接通过sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable 命令在Docker hub上获取镜像并且在容器中运行镜像。Rancher的具体操作可以参考Rancher的官网https://rancher.com/docs/rancher/v1.6/zh/quick-start-guide/ 。
三、SpringCloud应用打包。
要让应用在Docker容器中运行,就需要将应用打成对应的镜像文件。首先,我们需要在SpringCloud 应用的pom.xml 文件中添加以下插件。
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
<!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed-->
<imageName>microservice-discovery-eureka</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
然后,回到项目所在的目录,删除target目录,使用 mvn package spring-boot:repackage 命令将应用打成Jar包。
四、生成Docker镜像
在CentOS 上创建一个目录 /usr/local/docker 将上一步生成的Jar包拷贝到该目录中,从Windows 拷贝文件到Linux可以使用命令 sudo rz ,需要提前安装 rz 命令。拷贝到以上目录中后,在jar 包的同一层目录下使用 touch DockerFile 命令创建 DockerFile文件。文件的内容如下:
FROM openjdk:8-jdk-alpine
ADD consumer2-1.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8011
其中,ADD consumer2-1.0.jar app.jar 的前面一个consumer2-1.0.jar 名字必须要与之前打包的jar 包的名字以及artifactId那些
相同,否则会添加不进去。EXPOSE 命令是指定Docker 容器开放哪个端口,该端口可以和具体SpringCloud 应用的端口相同。
然后使用命令,docker build -t consumer2 . 命令生成Docker 镜像,注意最后一个 “.” 号必须要添加,该点号的作用是为了说明使用当前目录下的 DockerFile 文件生成镜像,生成的镜像名字为 consumer2,生成镜像完成后可以 使用命令 sudo docker images 查看到刚刚生成的镜像了。
五、 运行Docker 镜像
使用命令 docker run -d -p 8011:8011 consumer2 可以将刚刚生成的 consumer2 镜像运行起来了。
运行起来后,可以在Rancher 上的容器环境 Default 或者 Kubernetes (需要自己添加环境) 中看到运行的容器了
----------------------------------------------- the end ----------------------------------------