SpringBoot 项目制作docker镜像 详细教程

SpringBoot 项目制作docker镜像

创建 Dockerfile 文件,写入如下内容:
#版本1
FROM java:8
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
ENV TZ=GMT+8
RUN bash -c 'touch /demo.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]

注释:

  • FROM:表示已JDK8为基础镜像制作docker镜像
  • VOLUME:表示创建 /tmp 目录,并持久化到 Docker 数据文件夹。创建 /tmp 是因为SpringBoot内嵌的Tomcat容器默认使用 /tmp 作为工作目录
  • ADD:将容器外的 demo-0.0.1-SNAPSHOT.jar 拷贝到容器中,并重命名为 demo.jar
  • ENV:设置环境变量。docker默认的时区是格林威治时间,比我们晚8个小时,所以这里要设置成东八区的时间
  • RUN:RUN表示运行后面跟着的命令行命令,-c 表示将后面的内容作为一个字符串来统一执行,bash容器执行 -c 后面的命令,在 / 目录下创建一个 demo.jar 文件。需要注意的是,这里的 demo.jar 要和上一条ADD命令后面的 demo.jar 命名一致,表示将上一条命令添加到容器里的文件,创建在 / 目录下
  • ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启
    动时间,添加 java.security.egd 的系统属性指向 /dev/urandom 作为 ENTRYPOINT
#版本2
FROM java:8-alpine
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
ENV TZ=GMT+8
ENV JAVA_OPTS="-Xmx256m"
ENV JAVA_OPTS="-Xms128m"
CMD ["sh","-c","java $JAVA_OPTS -jar /demo.jar"]

版本2笔者并没有用过,略带解释一下ENV表示增加环境变量,这里设置了Java虚拟机最大内存和最小内存,CMD表示容器启动时候的执行命令。

创建好Dockerfile文件之后,把打包好的SpringBoot项目jar包放到Dockerfile同级目录下。
打包SpringBoot项目的时候,pom文件的最后要引入SpringBoot的maven插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

这个是Spring框架自己的maven插件,封装了maven。
打包好了jar包之后,假设为 demo-0.0.1-SNAPSHOT.jar
将 demo-0.0.1-SNAPSHOT.jar 和 Dockerfile 文件放到任意一个目录下,假设放到 /usr/local/env 目录下,使用docker进行镜像的制作:

docker build -t demo:1 /usr/local/env

注释:

  • build:表示制作镜像
  • -t:表示给镜像打个标签,相当于 docker tag 镜像ID 新镜像名:版本号
  • /usr/local/env:表示jar包和Dockerfile文件所在位置,如果是当前目录下,也可以用 . 表示
查看并运行镜像

查看镜像:

docker images

运行镜像:

docker run --name demo -d -p 8080:80 demo:1

注释:

  • docker run:表示运行容器
  • –name:表示给容器起个别名叫demo,操作容器的时候可以使用别名来代替容器ID,方便容器的管理
  • -d:表示容器开启后台运行
  • -p:端口映射。将容器内部的80端口映射到宿主机的8080端口。最后 demo:1 是要启动的镜像

十步杀一人,千里不留行
事了拂衣去,深藏身与名

–end–

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值