SpringBoot应用在Docker中运行

环境准备:

     1.  centOS 7

     2.  Docker 最新版本 18.06.0-ce

     3. SpringCloud应用(boot)

     4. Rancher | 全栈化容器管理平台

        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 ----------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值