SpringBoot32-springboot开发部署与测试-云部署,基于Docker的部署

        这篇将在centos7上用docker部署spring boot程序,学会如何编译自己的docker,并运行镜像的容器。

    主流的云计算(PAAS)平台都支持发布Docker镜像。Docker是使用Dockerfile文件来编译自己的镜像的。

一,Dockerfile

    Dockerfile主要有如下的指令:

 1)FROM指令

FROM指令指明了当前镜像继承的基镜像。编译当前镜像时会自动下载基镜像。

示例:

FROM ubuntu


  2)MAINTAINER指令

   MAINTAINER指令指明了当前镜像的作者

   示例:

   MAINTAINER  jack

 

   3)RUN指令

    RUN指令可以在当前镜像上执行Linux命令并形成一个新的层。RUN是编译时(build)的动作。

    示例有如下两种格式,CMD和ENTRYPOINT也是如此:

   RUN /bin/bash  -c "echo helloworld"

   或:RUN ["/bin/bash","-c","echo hello"]


   4)CMD指令

    CMD指令指明了启动镜像容器时的默认行为。一个Dockerfile里只能有一个CMD指令。

    CMD指令里设定的命令可以在运行镜像时使用参数覆盖。CMD是运行时(run)的动作。

    示例:

    CMD echo "this is a test"

   可被:docker run -d image-name echo "this is not a test"覆盖。


   5)EXPOSE指令

     EXPOSE指明了镜像运行时的容器必须监听指定的端口。

    示例:

     EXPOSE 9090


   6)ENV指令

   ENV指令可用来设置环境变量:

  ENV myName=jack

   或 ENV myName jack


    7)ADD指令

     ADD指令是从当前工作目录复制文件到镜像目录中去。

    示例:

    ADD test.txt  /mydir


    8)ENTRYPOINT指令

     ENTRYPOINT指令可让容器像一个可执行程序一样运行,这样镜像运行时可以像软件一样接收参数执行。ENTRYPOINT是运行时(run)的动作。

     示例:

     ENTRYPOINT ["/bin/echo"]


    我们可以向镜像传递参数运行:

   docker run -d iamge-name “this is not test”



二,安装Docker

       centos7下通过下面命令安装Docker:

       yum install docker

      启动Docker并保持开机自启:

    systemctl  start docker

    systemctl enable docker


三,项目目录及文件

     下面使用一个spring boot项目来演示,输出一个hello world,docker,如下:

       创建一个spring boot项目,

       pom.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.jack</groupId>
	<artifactId>springboot17dockerfile</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot17dockerfile</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.8.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<finalName>springbootdocker</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>


编写一个测试controller,如下:

package com.jack.springboot17dockerfile.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * create by jack 2017/11/3
 */
@RestController
@RequestMapping("docker")
public class DockerController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello world,docker";
    }
}


     

      在centos7上的/usr/local/mysoft目录下放入我们编译好的springbootdocker.jar包,在同级目录下新建一个Dockerfile文件,如下:



Dockerfile文件内容如下:

FROM hub.c.163.com/library/java:latest

MAINTAINER jack
ADD springbootdocker.jar springbootdocker.jar
EXPOSE 8080

ENTRYPOINT ["java","-jar","springbootdocker.jar"]

基镜像为:hub.c.163.com/library/java:latest

作者为jack

将springbootdocker.jar添加到镜像中,并重命名为springbootdocker.jar

运行镜像的容器,监听8080端口

启动时运行java -jar springbootdocker.jar


四,编译镜像

   在/usr/local/mysoft目录下执行下面的命令,执行编译镜像:

   docker  build  -t  jack/springbootdocker  .

    其中jack/springbootdocker为镜像名称,我们设置jack为前缀。

    注意,最后还有一个“.”这是用来指明Dockerfile路径的,“.”表明Dockerfile在当前路径下。

   编译的过程如下:



     这时我们查看本地镜像如下:



五,运行

    通过下面的命令运行:

   docker run -d --name springbootdocker -p 9090:8080 -i -t jack/springbootdocker

   查看当前的容器状态,如下:



    当前虚拟机的ip为192.9.0.104,访问http://192.168.0.104:9090/docker/hello



    使用docker logs 容器id

    查看容器日志,如下:




   上面就是编译一个dockerfile的基本步骤,详细的可以查看官方文档。

   代码地址在这里github:https://github.com/wj903829182/SpringCloudTwo/tree/master/springboot17dockerfile




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值