Application和controller
这个springboot应用相当简单,提供一个简单的controller,里面有一个类似与hello world的接口,如下:
package cn.com.controllers;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* Created by xiaxuan on 16/11/27.
*/
@RestController
public class IndexController {
@RequestMapping(value = "/index", produces = "application/json;charset=utf-8")
public Object index() {
Map<String, Object> result = new HashMap<String, Object>();
result.put("msg", "hello world");
return result;
}
}
提供一个简单的helloworl的方法。
以下是Application启动类:
package cn.com;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Created by xiaxuan on 16/11/27.
*/
@SpringBootApplication
public class SpringBootWebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootWebApplication.class, args);
}
}
正常的spring boot的启动中,相当简单,直接启动SpringBootWebApplication启动类即可,但是在docker容器中运行的话,则没有这么简单,看下下面的这个Dockerfile文件。
Dockerfile文件
Dockerfile文件也比较简单,如下:
# base image
FROM java:8# maintainer
MAINTAINER bingwenwuhen bingwenwuhen@163.com
# update packages and install maven
RUN
export DEBIAN_FRONTEND=noninteractive &&
sed -i 's/# (.*multiverse$)/1/g' /etc/apt/sources.list &&
apt-get update &&
apt-get -y upgrade &&
apt-get install -y vim wget curl maven
# attach volumes
VOLUME /vol/development
# create working directory
RUN mkdir -p /vol/development
RUN mkdir -p /vol/development/src
WORKDIR /vol/development
COPY ./src /vol/development/src/
COPY ./pom.xml /vol/development/
# maven exec
CMD ["mvn", "clean", "install", "spring-boot:run"]
dockerfile中以java8为基础镜像,同时在基础镜像中还需要单独安装maven,因为在我们的dockerfile文件中,是将整个源码都打进镜像之中,在这里没有只将生成的jar打进镜像中,所以这就是之前所说的需要在pom.xml中指定仓库,如果不指定仓库,则在镜像中拉取依赖的时候,会从中央仓库拉取依赖,那么会非常慢,我之前试过几次,基本拉取过程中,都超时失败了,所以在这里指定仓库拉取依赖。
构建镜像










