美文网首页
Springboot项目的Dockerfile

Springboot项目的Dockerfile

作者: _Gaara_ | 来源:发表于2020-08-13 09:31 被阅读0次

个人使用的,仅供参考

############################################
# version : ubuntu/jdk8
# desc : 当前版本安装的jdk8
############################################
FROM ubuntu:latest
# 下面是一些创建者的基本信息
MAINTAINER  gaara (gaara@qq.com)

# 设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive

# 中文环境
ENV LANG C.UTF-8

# 设置 jdk 的环境变量
ENV JAVA_HOME /opt/jdk8
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib

# 添加jdk jar shell
COPY . /opt/
RUN chmod +x /opt/run.sh
RUN chmod +x /opt/root.jar

#更改时区  以下为可选操作,可以单独摘出来
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update
RUN apt-get install tzdata
RUN dpkg-reconfigure --frontend noninteractive tzdata

#开启内部服务端口
EXPOSE 8443
# 执行
ENTRYPOINT /opt/run.sh && /bin/bash

解释

COPY . /opt/ 这个地方有一个160M的jdk8的文件夹,一个写有java -jar的命令的run.sh,和一个编译完成后改成root.jar的项目包
为什么不用java8的基础镜像而用ubuntu的,原因很简单,Java8的镜像打出来的container大概600M+,含项目,Ubuntu+jdk+jar,500M左右,比较省地方。个人用的项目,资源优先级大于性能。
再说一下写的顺序,之所以把更改时区的放后面是因为后面这两段我的服务器上是可配置的。因为我写好的自动化部署脚本,有的项目可能不是8443,需要动态更改暴露端口,有的项目并不会从系统中获取时间函数,所以这两个部分原则上是不写在Dockerfile里的,是通过我的管理项目追加进去的内容。
最后ENTRYPOINT /opt/run.sh && /bin/bash,个人喜好,写官方的形式总会遇到各种莫名其妙的问题,干脆不那么写了,反正就实现一个功能,喜欢啥就写啥。

相关文章

网友评论

      本文标题:Springboot项目的Dockerfile

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