写点什么

docker 入门:极简方式发布 springboot

用户头像
小黄鸡1992
关注
发布于: 4 小时前
docker入门:极简方式发布springboot

由于容器化的引入,使用 docker 发布项目是必须技能,下文带你掌握如果用 docker 分别发布前后端项目。本文以最简化的配置方式举例,保证可正常运行。

1.发布 springboot 项目

1.编写 Dockerfile 文件

下文以 eureka 项目举例,可以根据配置修改。


# Docker image for springboot file run# VERSION 0.0.1# Author: eangulee# 基础镜像使用javaFROM java:8# VOLUME 指定了临时文件目录为/tmp。# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmpVOLUME /tmp # eureka-0.0.1-SNAPSHOT.jar为jar名称 将jar包添加到容器中并更名为eureka.jar 注意要有/ ADD eureka-0.0.1-SNAPSHOT.jar /eureka.jar # 运行jar包 这里的eureka.jar与上文eureka.jar对应RUN bash -c 'touch /eureka.jar'ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka.jar"]
复制代码


解释下这个配置文件:


VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp 目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp 作为工作目录

项目的 jar 文件作为 “eureka.jar” 添加到容器的

ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source

如果是第一次打包,它会自动下载 java 8 的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。

2.部署文件

在服务器新建一个 docker 文件夹,将 maven 打包好的 jar 包和 Dockerfile 文件复制到服务器的 docker 文件夹下


3.制作镜像

cd /root/dockerdocker build -t eureka .      //注意此处的空格与.  eureka为镜像别名!!!!
复制代码


一定要注意". " .后面有个空格!



如果出现错误 Step 3/5 : ADD eureka-0.0.1-SNAPSHOT.jar app.jarlstat eureka-0.0.1-SNAPSHOT.jar: no such file or directory

为 ADD demo-0.0.1-SNAPSHOT.jar /eureka.jar 处配置问题,请检查是否指定了Application启动文件。

4.查看镜像

docker images
复制代码


见下图,可以看到本地已经有 docker 镜像了。


5.启动容器

  • 第一个 8761:为你正在操作虚拟机对外的端口 。

  • 第二个 8761:为 docker 容器对虚拟机提供的接口 。

  • --net=host:以本机 ip 作为容器地址。

  • eureka:为镜像名称。


docker run -d -p 8761:8761 --net =host eureka 
复制代码


注意这里有个坑,如果是使用 springboot Netflix,在服务间调用时,会从 eureka 拉取服务的 ip 地址。但是不加--net =host,会拉取 docker 的虚拟出的地址,当服务间访问时会访问虚拟地址而不是需要访问的服务器地址,所以这里楼主使用服务器地址作为 docker 的地址。如果有更好办法请联系楼主。


接下来就可以进入容器中,对容器进行操作了。


docker run -it eureka  /bin/bash
复制代码


用户头像

小黄鸡1992

关注

还未添加个人签名 2021.07.13 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
这个封面用心了
1 小时前
回复
没有更多了
docker入门:极简方式发布springboot