关闭

mac和linux下使用Docker,部署SpringBoot项目到docker

标签: Springboot部署dockerdocker入门云服务器docker
3036人阅读 评论(0) 收藏 举报
分类:

主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等。

我用的电脑是mac,本身并不支持docker,需要安装Docker ToolBox才能使用Docker。由于大部分情况下线上服务器都是linux,所以这里先以linux下Docker的使用为例,后面再讲在mac上部署Docker。我购买了一个阿里云的云服务器CentOS7.2,以此为例,如果在购买时就在阿里云镜像市场选择了带Docker的系统版本,就可以不用看安装Docker的步骤了。

Linux使用Docker

1 下载安装Docker

首先通过SSH连接云服务器,使用yum install docker即可,安装完成后启动service docker start,可以将docker加入开机启动chkconfig docker on。然后就可以使用docker了,首先试试docker version吧。
(推荐)如果下载docker很慢,我们可以使用DaoCloud提供的镜像站点加速。http://get.daocloud.io/
安装docker:
curl -sSL https://get.daocloud.io/docker | sh
如果是正常联网的云服务器或PC,执行完上面命令后就会开始下载安装了,过一段时间后成功会显示如下界面

使用下面的方式,它会自动配置一些信息,比手工下载docker并配置来的更方便。

2 配置docker加速器

由于很多镜像在国内下载起来很慢,DaoCloud提供了镜像加速器来进行加速

配置 Docker 加速器

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://cc4f263c.m.daocloud.ioCopy

该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/default/docker 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。


我们将上面的命令粘贴到云服务器命令行,执行后重启docker即可。


3 下载个镜像试试

docker官方有很多镜像,譬如Ubuntu、mysql、Tomcat之类的,国内也有很多镜像市场提供了各种各样的镜像。譬如DaoCloud镜像市场,网易蜂巢等,国内的镜像市场下载速度相对快一些。
我们下载个镜像来试试。
docker pull tomcat

通过docker images可以看到已经下载完了Tomcat镜像,下面启动它。
docker run -d -p 8080:8080 tomcat
基础命令网上多的是,就不解释了。
然后用ip:8080访问Tomcat看看效果,如果访问不到请先看看服务器的安全组策略,是否开放了相应端口。因为默认只开启了22端口,别的端口可能需要手工开启。


4 Springboot部署到docker及运行

DaoCloud也有个例子可供参考:http://guide.daocloud.io/dcs/docker-java-spring-boot-9153934.html
由于我们要演示SpringBoot部署到docker,所以我们需要一个包含了maven和java的镜像,当然也可以选择直接安装一个Ubuntu之类的系统再安装java。
这样的镜像有很多,官方的有maven:3-jdk-8     maven:3.3.3 这些都是带着maven和Java的,已经可以用来跑Springboot项目了。不过我后来找到了一个速度更快的,而且maven依赖的是阿里云maven的,众所周知,官方maven速度极慢,一般用阿里云的maven。

docker pull hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8 

这个是maven+java8的镜像,而且来自网易蜂巢,速度快。改自maven官方镜像,里面的maven更改为了阿里云的,下载maven更快。
平时大家需要什么镜像时,最好先到国内的这些镜像市场看看,常用的基本都有人配好了,下载快很多。

下载完上面的镜像后,我们就来构建一个Springboot项目,添加Dockerfile文件到根目录。我直接在本地创建项目,添加一个简单的Controller。

@RestController
public class DockerDemoSpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(DockerDemoSpringBootApplication.class, args);
    }

    @RequestMapping("")
    public String hello(){
        return "Hello! Docker!";
    }
}
 

Dockerfile:
FROM hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8

ADD pom.xml /tmp/build/

ADD src /tmp/build/src
        #构建应用
RUN cd /tmp/build && mvn clean package \
        #拷贝编译结果到指定目录
        && mv target/*.jar /app.jar \
        #清理编译痕迹
        && cd / && rm -rf /tmp/build

VOLUME /tmp
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

然后通过ftp工具上传到云服务器,我使用的filezilla,主机填写服务器ip,用户名root,密码是服务器密码,连接后即可传文件给云服务器了



我们把本地创建好的项目上传上去。然后在服务器命令行,进入项目根目录,并执行docker build命令,docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。

-t代表要构建的镜像的tag,.代表当前目录,也就是Dockerfile所在的目录。
然后就可以看到在下载各种依赖的maven、各种jar,构建完毕后,启动项目。



我们可以看到构建完毕的镜像testdocker,启动它,使用8088端口映射程序里默认的8080。
在外部浏览器访问:

这样我们就成功部署了一个Springboot项目了。如果要说,怎么连接数据库,redis之类的,我建议使用云端服务,云redis、云数据库,不建议在docker内安装这些,因为用了docker,多数情况下会启动多个实例,如果每个实例都有自己的数据库、redis,那么数据就无法同步了。

至于如何在mac上和Windows尚搭建本地的docker环境,可以去DaoCloud下载相应的包,http://get.daocloud.io/,安装完后,就有了docker环境了,后续的操作就和上面一样了。
后面我们学习使用Rancher来管理部署docker,就不用手工在命令行去敲命令管理docker了。




2
0
查看评论

用 Docker 构建、运行、发布来一个 Spring Boot 应用

本文演示了如何用 Docker 构建、运行、发布来一个 Spring Boot 应用。Docker
  • kkkloveyou
  • kkkloveyou
  • 2016-03-21 08:38
  • 32797

在Docker容器中运行Spring Boot应用

在Docker容器中运行Spring Boot应用 Spring Boot简化了Spring应用的开发过程,遵循约定优先配置的原则提供了各类开箱即用(out-of-the-box)的框架配置。另一方面,Spring Boot还具备将代码直接构建为可执行jar包的能力,这个j...
  • lsy0903
  • lsy0903
  • 2016-11-05 21:56
  • 5448

Springboot项目云部署 ---- 基于Docker的部署

在刚学习springboot的时候就了解到项目可以通过打包为jar或者war的格式放到服务器上通过命令直接运行,让部署的过程变得十分美丽。随着主流的云计算发展,应用平台都支持发布docker镜像,所以将项目直接部署在容器中,并运行镜像的容器变的也十分重要。 有时候分布式项目的发布,时刻要保...
  • LEoe_
  • LEoe_
  • 2017-09-11 17:37
  • 653

使用docker部署springboot应用

修改Springboot应用的application.properties文件,将mysql host改为mysql docker容器名(此处为mysql1跟docker-compose.yaml文件一致。)spring.datasource.url=jdbc:mysql://mysql1:3306...
  • jzd1997
  • jzd1997
  • 2017-11-07 14:58
  • 496

Spring Boot与Docker部署

转到:Spring Boot与Docker部署 开启Docker远程访问   首先需要开启docker远程访问功能,以便可以进行远程操作。 CentOS 6   修改/etc/default/docker文件,重启后生效(service docker restart)。 ...
  • harris135
  • harris135
  • 2017-08-04 11:48
  • 1378

Docker部署springboot项目实例

一. 背景快到2018了,一年过得如火如荼,今年因为K8S的原因,Docker很是红火、 一个简单的Docker部署Springboot项目实例供大家参考、 二. 实例步骤: 1. 创建镜像 2. 启动应用1. 创建镜像 创建DockerFile cd /var/docker vi Doc...
  • yy756127197
  • yy756127197
  • 2017-12-26 10:34
  • 312

搭建Jenkins+SpringBoot+Docker的微服务持续集成框架

前言近一、两年,SpringBoot和Docker可以说非常的火热啊,而早在2015年的时候我就弄过一下Docker,不过由于职位和跳槽等种种原因,2016年就很少搞了,不过现在再捡起来也是很容易的。而SpringBoot我也是最近才开始学的,不知道有木有落伍哈。微服务概念的提出的同时也把这几个技术...
  • lusyoe
  • lusyoe
  • 2017-02-09 18:06
  • 7376

第一个 spring Boot 应用通过Docker 来实现构建、运行、发布

1. Docker 简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker image 是用于运行容器化进程的方案,在本文中,我们将...
  • u010046908
  • u010046908
  • 2017-02-20 10:18
  • 5887

Docker部署SpringBoot项目

前提是已经拥有一个docker环境和一个springboot打成的jar包,搭建docker环境可参考上一篇博文ECS上搭建Docker(CentOS7) 1.创建Dockerfile 创建一个文件名为Dockerfile的文件,复制以下内容到文件中 FROM java:8 ...
  • runner1920
  • runner1920
  • 2018-01-11 16:14
  • 91

docker 中部署一个springBoot项目

docker 中部署一个springBoot项目 (1)介绍 springBoot项目 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="...
  • caox_nazi
  • caox_nazi
  • 2017-10-27 16:42
  • 619
    个人资料
    • 访问:350043次
    • 积分:4389
    • 等级:
    • 排名:第8156名
    • 原创:100篇
    • 转载:39篇
    • 译文:0篇
    • 评论:148条
    博客专栏
    友情链接
    最新评论