Docker化你的SpringBoot项目

容器和微服务可谓是一对好朋(ji)友(you),因为微服务架构下的业务服务通常都基于SpringBoot进行开发,上线部署服务的时候通过容器来进行部署,能够简化部署的过程,然后使用一些容器管理工具管理容器,例如k8s、rancher等。这样才能方便我们进行扩展、重建以及销毁服务等操作,最重要的是使用Docker部署项目会比传统的部署方式更简单,基本就几条命令的事,所以学会使用Docker部署SpringBoot项目显得尤为重要。

本文默认读者已经掌握docker的相关操作,如果你对docker相关的知识不熟悉,可以参考我容器/虚拟化分类的文章,我这里就不对其进行赘述了,地址如下:

http://blog.51cto.com/zero01/category27.html

一般我们会将docker镜像存放在镜像仓库中,这样方便于在其他机器上拉取镜像。如果是个人使用的话,我们可以在网易云上创建自己的镜像仓库,网易云镜像仓库地址如下,需要注册账户:

https://www.163yun.com/product/repo

账户注册好后,我们来试着手动创建一个自己的镜像仓库:

填写镜像仓库的相关信息:

创建完成:

不过我们一般不会手动去创建镜像仓库,而是在本地build好镜像,然后推送到仓库上。

关于推送本地镜像到网易云镜像仓库上的文档地址如下,所以关于推送本地镜像我就不过多赘述了:

https://www.163yun.com/help/documents/15587826830438400



接下来我们docker化自己的SpringBoot项目,我现在已经准备好了一个需要docker化部署的SpringBoot项目,项目根目录如下:

为我们自己的项目制作镜像时,需要基于一个系统镜像,我们可以到网易云的镜像中心去获取所需的系统镜像,地址如下:

https://c.163yun.com/hub#/m/home/

我这里使用的是alpine系统的镜像,镜像地址:hub.c.163.com/library/java:8-alpine

在项目的根目录中,创建一个Dockerfile文件,编辑文件内容如下:

FROM hub.c.163.com/library/java:8-alpine

MAINTAINER zeroJun [email protected]

ADD target/*.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

打开命令行终端进入到项目的根目录下,并登录你的网易云镜像仓库账户:

docker login -u ${账号} -p ${密码} hub.c.163.com

然后编写一个简单的shell脚本来完成build及推送镜像的工作:

[[email protected] /work/superposition]# vim build_superposition.sh
#!/bin/bash
mvn clean package -Dmaven.test.skip=true
docker build -t hub.c.163.com/${仓库名}/superposition .
docker push hub.c.163.com/${仓库名}/superposition
[[email protected] /work/superposition]# 

注意,这里是仓库名,即账号中类似于用户名的字段,例如我的仓库名是zerojun,所以脚本内容如下:

#!/bin/bash
mvn clean package -Dmaven.test.skip=true
docker build -t hub.c.163.com/zerojun/superposition .
docker push hub.c.163.com/zerojun/superposition

运行脚本:

[[email protected] /work/superposition]# sh ./build_superposition.sh

脚本执行完成后,到镜像仓库上可以看到镜像已经成功push上来了:

默认从本地push的镜像都是私有的访问权限,我们需要设置为公开的,否则无法被外部访问:

当然,你也可以设置为私有的访问权限,那样拉取镜像前,登录你的仓库账号即可,我这里为了方便演示就设置成功公开了。

点击镜像可以查看到镜像仓库详情,复制镜像的下载地址:



到服务器上,使用如下命令拉取这个镜像:

[[email protected] ~]# docker pull hub.c.163.com/zerojun/superposition:latest

使用如下命令,启动该镜像为运行中的容器:

[[email protected] ~]# docker run -d -p 8080:8080 hub.c.163.com/zerojun/superposition:latest

运行成功后,通过post进行测试如下:

可以看到接口能够正常访问,如此一来,我们就成功docker化部署了一个SpringBoot项目。

原文地址:http://blog.51cto.com/zero01/2173463

时间: 2024-11-06 10:01:34

Docker化你的SpringBoot项目的相关文章

某项目docker化持续集成日记

某项目docker化持续集成日记 要求将某项目的部署方式转变为docker的方式,并和jenkins相结合,主要组件有自身的两个服务(bill-api ,bill-backend)以及mysql.mq.redis 2016-04-18 先申请了2台机器,因为只是demo,所以提出要debian7 3.18内核的,配置的话2x2 4G或以上就可以 得到2台机器106和107 在jenkins节点机器上ping和telnet一下,访问正常 jenkins机器138 安装docker-1.9.1 1

PHP项目Docker化指南@KVM云技术社区分享

文章亮点 将PHP应用及其依赖的服务容器化步骤 如何将应用容器镜像的构建自动化 应用容器如何快速部署到测试环境和生产环境中 快速上手 PHP官方在 hub.docker.com 上维护了官方的PHP Docker镜像,包含了从PHP 5.5到7.0的多种不同版本的镜像. 我们将以PHP官方的Docker镜像为基础,介绍如何将一个简单的PHP应用Docker化. 创建一个新目录 php-quickstart,作为我们的项目目录 在项目目录下创建文件 app.php <?php  echo "

使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇文章借助开源插件docker-maven-plugin 进行操作 以下操作.默认你已经阅读过我上一篇文章: Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo http://www.ymq.io/2018/01/11/Docker-deploy-spring-bo

用docker部署springboot项目

创建springboot项目,编写一个简单的hello world controller 下面是效果图. 下面是pom.xml 文件. 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.

什么样的项目适合docker化改造

docker官网上说明了docker的典型场景: 使应用的打包与部署自动化 创建轻量.私密的PAAS环境 实现自动化测试和持续的集成/部署 根据这些特性,我们可以想象一下,如果你的项目有如下痛点或者需求,那么可以考虑一下使用docker了. 需要频繁的升级,可以充分利用docker的镜像版本快速升级回退. 销售演示或者POC的demo.启动后无历史数据,免去清理数据的烦恼. 项目体量过大,进行了微服务改造.需要统一管理,docker-compose了解下. 占用资源过多,可以利用docker资源

docker 运行jenkins及vue项目与springboot项目(四.docker运行nginx)

docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四.docker运行nginx 五.jenkins打包springboot服务且在docker中运行 准备配置 创建 /home/jenkins/docker/nginx/nginx.conf 文件及/home/docker/nginx/log文件夹 其nginx.conf 文件为在原nginx.co

docker 运行jenkins及vue项目与springboot项目(五.jenkins打包springboot服务且在docker中运行)

docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四.docker运行nginx 五.jenkins打包springboot服务且在docker中运行 1.立即构建 输入任务名称:service_blog 选择maven项目(先要在插件管理中安装maven插件) 2.配置 源码管理 选择git(先要在插件管理中安装git插件) 输入git地址.秘钥及

Docker快速上手之部署SpringBoot项目

Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”. Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的.将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了

上传springboot项目到远程docker

昨天在云服务器上配置了docker环境,正好手边有个springboot的项目.今天研究一下如何将一个springboot项目打包到docker容器,然后通过运行一个镜像来启动项目. 1.打开docker允许远程访问docker的功能 选“E”继续 添加红框内容 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 配置完成后保存退出,然后重启docker systemctl daemon-reload service docker resta