Docker部署web项目
前面部署过springboot项目,这里主要记录不同之处。
SpringbootWeb项目
- 注意是@Controller注解,不是@RestController
- 返回的
hello
表示页面,不要写成/hello
,本地这样写没问题,服务器可能会匹配不到页面
@Controller
public class HelloWebController {
@RequestMapping("/hi")
public String index(Locale locale, Model model) {
model.addAttribute("greeting", "Hello!");
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("currentTime", formattedDate);
return "hello";
}
@RequestMapping("/test")
@ResponseBody
public String test() {
return "Hello Test!";
}
}
Doockerfile文件:
- war包和jar包配置大同小异
- 页面时间显示问题,不配置显示UTC时间,差8小时
FROM openjdk:8-jdk-alpine
#时差8小时问题
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
ADD target/Joine.jar /app.jar
VOLUME /tmp
#ADD spring-boot-hello-1.0.jar app.jar
ADD spring-boot-web-1.0.01.war app.war
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.war"]
Docker部署
这里不再累赘,参考前篇 docker部署springboot
Nginx反向代理
让域名默认的80端口代理到实际应用的8080端口
http {
upstream test.com {
server xxx.top:8080 weight=1;
}
}
server {
listen 80;
server_name www.xxx.top xxx.top;
#charset koi8-r;
#access_log logs/host.access.log main;
location ^~ / {
# proxy_pass反向代理到xxx.top:8080/hi
proxy_pass http://test.com/hi;
}
location /webjars {
proxy_pass http://test.com;
}
location /css {
proxy_pass http://test.com;
}
}
时区问题
Dockerfile加上这句:
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
测试
The current time is 2021年4月4日 CST 下午12:12:53