用简单的语言表达复杂,用熟悉的东西解释陌生。
SpringBoot创建一个简单的Web应用
- 首先登录https://start.spring.io/,选择Gradle + WEB来创建一个基于tomcat的web应用。
- 在创建好的web应用里,仅仅填写controller层来达到简单测试的目的。
Contoller的代码如下:
package com.hellodocker.dockerdemo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author You Jia
* @Date 3/28/2018 3:21 PM
*/
@RestController
public class Controller {
@GetMapping("/HelloK8s")
@ResponseBody
String mongoDBupdate(String name) {
return "Hello Docker !!! Hello K8s !!!" ;
}
}
- 运行Gradle build来生成一个该web应用的jar包。
创建Dockerfile文件
关于Dockerfile的预备知识
创建dockerfile之前,应该要知道一些它的基本知识,这里贴一个很形象的图,它解释了Dockerfile里的常用指令的含义。
第一次用Dockerfile打包SpringBoot的Java Web应用
这里特别需要指出的是, Dockerfile的指令根据作用可以分为两种:构建指令和设置指令。构建指令用于构建image,其指定的操作不会在运行image的容器上执行;设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。
特别推荐一篇关于dockerfile指令的解释,点击这里
Dockerfile实战
- 我在centos上创建了一个跟dockerApp相关的路径:
mkdir dockerApp
- 上传前面build成功的jar包到该路径下。
- 在dockerApp这个路径下创建dockerfile
touch dockerfile
Dockerfile的内容如下:
FROM openjdk:8
MAINTAINER YOU JIA
LABEL app="myApp" version="0.0.1" by="youjia"
COPY ./dockerdemo-0.0.1-SNAPSHOT.jar mydockerapp.jar
CMD java -jar mydockerapp.jar
-
执行 docker build -t myapp . 创建image。
注意:这里的 . 代表当前路径 -
Build成功以后,可以通过命令docker images查看已经创建的image。
image.png
-
运行docker run --name mywebapp -p 8080:8080 -d myapp,跑起来!!!
注:可以用docker logs参看自己的image日志,如果发现docker启动不了。。。
举个栗子:比如在我的用例里命令为: docker logs myapp
比本文更值得看的参考文献:
Using Docker to Deploy a Containerized Java Web App
以上。
第一次用Dockerfile打包SpringBoot的Java Web应用
网友评论