今天也要加油啊江同学

MacOS下使用Docker部署Springboot项目到Ubuntu服务器

MacOS下使用Docker部署Springboot项目到Ubuntu服务器

首先,什么是Docker:

Docker是一个基于Go的开源应用容器引擎,我们可以使用Docker来打包我们的应用和依赖到一个轻量级,可移植的容器中,然后将应用部署在任何流行的系统上。也就是说使用Docker能让我们的应用程序与基础架构分开,大大减少从生产代码到测试,部署代码间的内耗。

好处可以总结为以下三点:

  1. 快速,一致地交付应用程序:就像上面说的,我们的应用程序实际工作在Docker的容器而不是直接与操作系统交互,开发时可以使用Docker容器来共享工作,简化了开发的周期。
  2. 响应式部署和扩展:Docker具备可移植性和轻量级的特性,可以在开发人员的本地机器,云服务,数据中心的物理或虚拟机等各种环境下运行,根据业务需求实时扩展或拆除应用程序和服务(感觉有点微服务的意思)。
  3. 在同一硬件上运行更多工作负载:Docker就类似于一个轻量级的虚拟机,非常适合于高密度环境以及中小型部署。

介绍完Docker的好处,再来说说什么Docker究竟长什么样,架构如何。

Docker的三个基本概念:

  1. 镜像(Image):一个由多个镜像层叠加起来的文件系统,可以是一个包含整个完整ubuntu:16.04最小系统的文件系统,也可以是这篇博文中提到的一个完整的java程序和其依赖包。镜像层之间是单向链表的关系,但是使用统一文件系统(Union File System)技术,这些层具有统一的视角,在用户看来只存在一个文件系统。
  2. 容器(Container):与Image类似,简单理解的话,可以将其看作静态的镜像运行时的实体,容器可以被创建,启动,停止,删除,暂停等。容器 = 镜像+读写层
  3. 仓库(Repository):代码控制中心,和git差不多。

简单来说,docker容器进程在隔离的进程空间中对读写层进行操作,以此来修改镜像。

介绍完docker,再来说docker的配置。

首先Docker for MacOS下载:

官方地址:https://download.docker.com/mac/stable/Docker.dmg

下起来太慢了。。找了个国内镜像:

https://download.docker.com/mac/stable/Docker.dmg

然后是配置:主要是改变镜像源到国内,理由同上

修改了registry-mirrors

然后打包Springboot项目为Jar包:

接下来编写dockerfile,类似makefile

from指定了基础镜像。add将jar包以”kechuangclub-1.0.jar”添加到容器。如果是第一次打包,则执行dockerfile时会自动下载java 8作为基础镜像,以后再制作镜像时就不会再下载了。

把jar包和dockerfile放在同一目录下,然后制作镜像:

docker build -t kechuangclub .

注意!最后有一个点。-t指定了此镜像的tag名。将镜像上传到dockerhub时还需要进行修改。

利用docker images查看我们制作的镜像:


启动容器:

docker run -d -p 8082:8081 kechuangclub-1.0
-d参数是让容器后台运行 
-p 是做端口映射,此时将服务器中的8080端口映射到容器中的8085(项目中端口配置的是8085)端口

然后服务成功在docker容器中跑起来了。

接下来,将镜像推送到Dockerhub上:

注意要先修改tag名,否则会推送失败。命令如下:

docker tag kechuangclub-1.0 xinyujiang/kechuangclub:1.0

前面是原镜像名,后面是新的格式:usr/image:tag

然后docker push ImagesID,因为网络问题可能会一直推送失败(我试了好多次),最后终于成功上传,在ubuntu下类似得配置docker环境,pull项目,运行容器:

sudo docker run -d -p 8082:8081 xinyujiang/kechuangclub:1.0

大功告成。

如果想要对镜像进行修改,则修改完commit,再push到hub上,与git类似。

xinyu