美文网首页
spring-boot Docker 部署

spring-boot Docker 部署

作者: EricDD | 来源:发表于2019-07-25 13:26 被阅读0次

spring-boot Docker 部署

环境

docker 18.09.7-ce
spring-boot 2.1.6.RELEASE
JDK 1.8

开始

  1. https://start.spring.io/下载一个demo,只依赖web模块,导入IDE.
  2. 写点测试代码
@SpringBootApplication
@RestController
@RequestMapping("/demo")
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping
    public String home(){
        return "home";
    }

}
spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm
  1. 编写 Dockerfile
FROM gcr.azk8s.cn/distroless/java

VOLUME /tmp
ADD app.jar  app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","app.jar"]
  1. 将测试代码打包为可执行jar文件。并执行Docker build命令。
sudo docker build -t demo-app:1.0 -f ./BootDockerfile ./

# demo-app  打包仓库名
# 1.0 打包tag
# ./BootDockerfile 指定Dockerfile
# ./ 指定可执行jar 目录
  1. 查看docker 镜像
sudo docker images

REPOSITORY                                       TAG                 IMAGE ID            CREATED             SIZE
demo-app                                         1.0                 f2b2c312684d        5 seconds ago       142MB
  1. 执行并测试
sudo docker run -p 8080:8080 -t demo-app:1.0
1.png

常见问题

基础镜像,网上一些资源使用的是 java:8,但是生成的镜像400多M实在有点大。所以我使用了Google 开源的项目 distrolessDistroless 镜像只包含应用程序及其运行时依赖项,不包含包管理器、shell 以及在标准 Linux 发行版中可以找到的任何其他程序。

Distroless 镜像网络问题,直接使用gcr.io/distroless/java,docker构建镜像是无法下载所以使用了,开源社开源镜像站点

时区问题
Distroless 镜像不包含linux 发行版中的任何其他程序,所以
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone 命令设置时区不好使。
修改Dockerfile
ENTRYPOINT ["java","-Duser.timezone=GMT+8","-jar","app.jar"]

编码问题
保存到数据库内容全部为???
修改Dockerfile
ENTRYPOINT ["java","-Duser.timezone=GMT+8","-Dfile.encoding=utf-8","-jar","app.jar"]

相关文章

网友评论

      本文标题:spring-boot Docker 部署

      本文链接:https://www.haomeiwen.com/subject/ohnnlctx.html