摘要: 本文演示了如何用 Docker 运行、发布来一个 Spring Boot 应用(主要是本地创建的spring boot应用如何发布在远程(aliyun)服务器上)。 Docker 简介 Docker 是一个 Linux 容器管理工具包,具备“社交”方面,允许用户发布容器的 image (镜像),并使用别人发布的 image。
前置条件
阿里云服务器的环境 :JDK 1.8+、Maven 3.0+、Docker 最新版。
1)、先构建一个简单的Spring boot项目,目录结构如下(spring boot项目大家肯定都有用过,所以不做过多的赘述,只注重pom.xml和Dockerfile):
项目目录图和Dockerfile:
Dockerfiles:
Dockerfile是对Docker Container创建过程的描述脚本。每个Dockerfile详细说明了开始的基础镜像,以及随后一系列在容器中运行的命令和添加到容器中的文件。Dockerfile也可以说明容器对外的端口,启动时的工作目录和缺省执行的命令。
VOLUME
指定了临时文件目录为/tmp
。其效果是在主机/var/lib/docker
目录下创建了一个临时文件,并链接到容器的/tmp
。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp
目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp
作为工作目录- 项目的 jar 文件作为 “app.jar” 添加到容器的
ENTRYPOINT
执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source-
ENV指定环境变量的值
-
FROM
语法:FROM <image>[:<tag>]
解释:设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载。 -
RUN指令会在一个新的容器中执行任何命令,然后把执行后的改变提交到当前镜像,提交后的镜像会被用于Dockerfile中定义的下一步操作,RUN中定义的命令会按顺序执行并提交,这正是Docker廉价的提交和可以基于镜像的任何一个历史点创建容器的好处,就像版本控制工具一样。
2)、测试项目是否在本地可以运行
3)、项目上传至git
4)、在服务器上从git pull下代码
服务器上必须安装JDK 1.8+、Maven 3.0+、Docker 最新版这里就不做多的叙述,大家应该都比我熟悉。
先pull下代码使用 mvn clean命令清空target输出目录
再使用mvn package docker:build命令生成项目对应的镜像springio/docker 对应的镜像名在pom.xml文件中有配到
再使用docker run -t 8080:8888 springio/docker 启动镜像 这里的8888是springboot项目在镜像中启动时的端口,映射到阿里云服务器上的8080端口,这样就可以直接通过8080 端口进行访问了
这个上周六自己学习总结的比较简单的一个用docker 发布springboot项目到远程服务器上的一个小demo,希望大家可以用到,更复杂的docker 应用,比如docker compose工具后期如果学习也会写文档