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

主要是看一下如何在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了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏magicodes

使用MONO在MAC OS上开发——同步日志(二)

上一篇使用MONO在MAC OS上开发——同步日志(一)讲述了在MAC OS读取配置文件以及写日志,那么只算是完成了基本的配置,下面的才是重点。

14130
来自专栏Albert陈凯

2018-12-20 WARNING: Plotting with an 'unknown' terminal. No output will be generated. Please sele...

在随书下载的说明网页中,简单交代了配套代码的使用方法。有读者反馈说,对“配 置好 Ruby 和 Gnuplot 环境”不太明白。这里确实有点抱歉,原作者可能默...

26430
来自专栏Zachary46

转载:(Mac)在bash和zsh配置环境变量path的几种方法

老习惯,列出本文参考或引用或转载的文档和博客,致以崇高的敬意,感兴趣的可以去看看 1.http://postgresapp.com/ 2.http://po...

28920
来自专栏coding

vagrant搭建centos环境前言环境准备安装修改配置文件启动与连接常用vagrant命令清空重新导入镜像配置文件 Vagrantfile填坑记录

macos作为开发环境已经相当方便,有很丰富的工具,如homebrew类似于ubuntu的apt-get和centos的yum,很方便地安装各种开发工具。但终究...

26130
来自专栏24K纯开源

macOS packages安装时的降级处理

 在制作macOS的pkg安装包时,一般新发布的程序版本会比旧版本更高。但是有的时候我们也希望在安装的时候,对程序的某些依赖库进行降级安装。比如高版本依赖库中出...

13310
来自专栏weixuqin 的专栏

Ubuntu 安装后的配置及美化(一)

然后在 搜狗输入法Linux官网 下载 64位程序,解压并移动到当前目录下,执行如下指令:

30940
来自专栏CRPER折腾记

Fixed: MacOS Mojave(10.14) 解决终端用Crontab报权限问题(不管是Root还是普通用户)及Linux基础(shell)

不管是用Root还是自身用户..都会报Operation not permitted(任务没法写入);

27730
来自专栏移动端周边技术扩展

VSCode代码格式化自动换行问题

Mac VSCode 升级中替换了内置格式化插件导致代码格式化自动换行问题: 1、设置 2、搜索 vetur 3、右边三个点按钮,-> open sett...

1.4K20
来自专栏FreeBuf

Armor:一款功能强大的macOS Payload加密工具

今天给大家介绍的是一款名叫Armor的macOS Payload加密工具,Armor是一个功能强大的Bash脚本,通过它来创建的加密macOS Payload能...

11020
来自专栏微信公众号:小白课代表

Mac 版 Adobe CC 2019 的日常更新。

Adobe CC 2019 软件已经发布有一些时候了,由于2019更换了注册模块,所以新版软件的破解出来得很慢。Adobe Zii破解工具是由国外TNT大神制作...

48350

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励