SpringBoot32-springboot开发部署与测试-云部署,基于Docker的部署
来源:互联网 发布:java main启动spring 编辑:程序博客网 时间:2024/06/06 05:05
这篇将在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:latestMAINTAINER jackADD springbootdocker.jar springbootdocker.jarEXPOSE 8080ENTRYPOINT ["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
- SpringBoot32-springboot开发部署与测试-云部署,基于Docker的部署
- Springboot项目云部署 ---- 基于Docker的部署
- SpringBoot31-springboot开发部署与测试-开发热部署和常规部署
- springboot docker部署发布
- SpringBoot Docker部署
- SpringBoot33-springboot开发部署与测试-spring boot测试
- 基于docker的应用服务部署
- 基于docker的codis3部署
- 基于Axis的WebService测试,开发,部署
- 基于Docker部署codis
- docker 部署springboot、dubbo项目
- 使用docker部署springboot应用
- docker 内部署 springboot 应用
- Docker部署springboot项目实例
- Docker的安装与部署
- docker项目开发部署
- 基于docker compose的应用服务部署
- 基于Docker的Consul集群部署方案
- 简单高仿荷包注册进度条
- LeetCode Exercise 8: Remove Nth Node From End of List
- ubuntu下修改mysql数据库root密码
- WebService
- 关于分库分表?
- SpringBoot32-springboot开发部署与测试-云部署,基于Docker的部署
- 如何封装一个简单的Android关机接口
- 数组中只出现一次的数字
- leetcode题解-5. Longest Palindromic Substring
- 宏一定要用大写
- OI中C++常数问题及其优化
- 字符串左旋
- 简明矩阵的还原
- c# 教程