序:
前些时间把PHP都Docker了,今天研究了下Tomcat,直接在Docker跑上了。
本文将发表于facecto.com和上。
编撰于2018.12.20
在前人的轮子上
安装Docker,点击这里直接看,然后下载一个tomcat镜像。
docker pull tomcat:8-alpine
当前下载的是tomcat8.5,基于alpine的版本,这个版本优点是体积特别小。
然后准备一份server.xml文件,主要是增加了UTF-8,如果没有直接复制
新建一个文件夹 tomcat
将server.xml保存在tomcat子目录conf下,当前的目录树是
/tomcat
/tomcat/conf
/tomcat/conf/server.xml
新建Dockerfile文件
在/tomcat目录下新建Dockerfile
# 以刚刚下载的tomcat为基础镜像
FROM tomcat:8-alpine
# 这个是作者信息
MAINTAINER "seven"
# 将原有的server.xml删除
RUN rm /usr/local/tomcat/conf/server.xml
# 把conf下的server.xml复制到tomcat的配置目录
COPY conf/server.xml /usr/local/tomcat/conf/
OK了,非常短的文件。
开始编译,运行如下命令:
docker build -t seven/tomcat8 .
等待几秒钟,UTF-8的Tomcat镜像就完工了。
测试
用idea 新建一个SpringBoot项目,记得选JDK8的。
新建一个helloController
package com.facecto.demo;
@RestController
@Slf4j
public class HelloController {
@RequestMapping("/")
public String index()
{
return "hello world";
}
}
修改默认生成的DemoApplication为如下
package com.facecto.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer
{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
}
Maven编译
mvn clean package -Dmaven.test.skip=true
将target下的demo-0.0.1-SNAPSHOT.war上传到数据文件夹,并解压。
可以直接unzip xxx -d /web的方式。
启动docker
docker run -d -v /web:/usr/local/tomcat/webapps/ROOT --name tomcat -p 8080:8080 seven/tomcat8
访问绑定的的域名或者
curl 127.0.0.1:8080
应该能看到熟悉的hello world
至此,Tomcat的初级Docker完成了。
当然如果觉得docker run 不过瘾,可以docker-cpmose,或者 docker swarm,或者K8S