1.问题由来
项目的jar包大小为48M左右,放在docker环境中运行,使用centos作为服务器并通过从宿主机解压jdk1.8.tar.gz方式配置java运行环境,发现打包后镜像大小为600M左右。
2.Alpine
Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk,可以通过 https://pkgs.alpinelinux.org/packages 网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。
于是考虑使用Alpine作为最小的运行环境,docker官方也支持Apline的服务且有jdk与Alpine集成好的镜像,我们可以直接使用。
DockerFile内容如下:
FROM java:8-alpine
MAINTAINER
## 更新apk源
RUN apk update
## 设置时区
RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
## 设置输出格式
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
完成后发现构建的镜像196M。
Alpine使用apk进行安装。使用Alpine运行的容器,如果需要进入容器内部,需要使用docker exec -it 镜像id /bin/sh命令,这一点与其他的稍微有些不一致。
本文探讨了如何通过将Java应用部署在基于Alpine Linux的Docker环境中,有效地减少镜像大小。原来基于CentOS的镜像大小约为600MB,而切换到Alpine后,镜像大小降低到196MB。介绍了Alpine Linux的特性,如小巧精悍、包管理工具apk,并展示了如何构建和配置Alpine Dockerfile,包括设置时区和环境变量。此外,还提到了进入Alpine容器的方法与常规不同,需要使用`docker exec -it`命令。
5768

被折叠的 条评论
为什么被折叠?



