一:安装docker

1.https://docs.docker.com/engine/installation/binaries/
下载docker最新版二进制tar.gz

linux下:
wget https://get.docker.com/builds/Darwin/x86_64/docker-1.11.0.tgz

2.丢到 $path中

mv docker /usr/local/sbin

3.启动

docker daemon &

二.在容器上运行tomcat

docker官方镜像仓库由于有墙,所以下载的很慢。目前我用的是时速云的镜像。

第一步:拉取镜像到本地
docker pull index.tenxcloud.com/tenxcloud/tomcat

第二步:为镜像添加一个别名
docker tag index.tenxcloud.com/tenxcloud/tomcat tomcat-1

第二步:启动tomcat
docker run -p 5000:8080 --name container1 tomcat-1
如此一来,tomcat就启动了,-p 5000:8080的意思是把容器tomcat的8080端口隐射到宿主机的端口上,这样外网访问5000就能访问到我们的container1的8080 tomcat上面了.

如此一来,一个简单的tomcat就跑起来了.

此处容器container1 和 镜像tomcat-1,我的理解是镜像就是一个模板,container1就是根据这个模板创造的一个真正的盆子,这个盆子里面就跑着我们的tomcat. 所以我们可以用同一个镜像创建许多container。

三.在tomcat上面部署我们的应用

接下来我们要部署我们的应用上去,思路是进入到container1里面去,此时可以把container1想象为一个新的机器,我们只需要到tomcat的webapp丢war,然后重启就行了.

1.进入容器内部

docker exec -it container2 /bin/bash

2.查看tomcat webapp路径

/tomcat/webapps

3.传war

把war丢到宿主机 在丢到container里面丢到tomcat/webapps

docker cp DemoOne.war container2:tomcat/webapps

太TM惊喜了,docker本身就支持啊!!!666666.

4.重启容器

不需要了。。。docker自动帮你部署了

5.访问应用


至此,一个完整的docker部署tomcat及上线一个java web应用流程就走通了.
说实话,走通后才发现是这么的简单。之前概念上面不懂的地方这下也基本通了。
不得不说很Nice,和预想中的完全一样,就把dokcer给你创建的container当成一个新的linux用就行啦!


使用docker部署一套应用系统

接下来部署一套完整的系统,包括如下组件:
负载均衡:Haproxy
JAVA工:tomcat
缓存:Redis Master、Slave

流程是Java开一个restful接口,为redis写入一个数据,
再开一个restful接口,从redis读取一个数据。

系统结构如图:

步骤:
1.准备java工程,并打包成war
2.拉取haproxy镜像,并运行

//注意 --name不能放在最后,6555:80 80不可更改,是haproxy本身的端口
docker run -d -p 6555:80 --link container2:container2 --name haproxy-1 haproxy


可以看到,haproxy已经成功实现了代理的功能.

docker - 从安装到部署一个web应用(go、java)的更多相关文章

  1. linux系统上部署一个web项目

    对于apache开源项目中tomcat的认识,大多停留在Windows下,这次我通过一个简单的实例来介绍一下在linux下如何搭建tomcat环境,并且部署一个web项目. 先从基本安装开始,可别小看 ...

  2. Serverless 初体验:快速开发与部署一个Hello World(Java版)

    昨天被阿里云的这个酷炫大屏吸引了! 我等85后开发者居然这么少!挺好奇到底什么鬼东西都是90.95后在玩?就深入看了一下. 这是一个关于Serverless的体验活动,Serverless在国内一直都 ...

  3. 在Docker中安装和部署MongoDB集群

    此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在Docker中安装mongodb 采用的mongodb镜像:https://registry.hub.doc ...

  4. Linux环境下的Docker的安装和部署、学习-一

    CentOS Docker 安装Docker支持以下的CentOS版本:CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本 前提条件目前,CentOS 仅发行版本中 ...

  5. Bigger-Mai 养成计划,Docker之安装,部署

    CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发 ...

  6. Jrebel简单的热部署一个web工程

    前言:博主最近在做Hybris开发,漫长的启动时间大大的拖累了项目的进度,而Jrebel的出现就是为了减少项目重启的时间或者说修改了代码后直接不用重启就可以看到修改的结果,但是Hybris的部署一直没 ...

  7. Linux环境下的Docker的安装和部署、学习二

    DockerFile体系结构(保留字指令) FROM:基础镜像,当前新镜像是基于哪个镜像的 MAINTAINER:镜像维护者的姓名和邮箱地址 RUN:容器构建时需要运行的命令 EXPOSE:当前容器对 ...

  8. 关于Windows Server 服务器 安装tomcat部署Java Web 项目的问题

    我遇到的问题是:不知道怎么配置,感觉在服务器上部署一个web项目,应该是很高大上,步骤应该很繁琐,但是,事实却不是那样.配置反而挺简单. tomcat配置:在tomcat安装目录中的conf文件夹下有 ...

  9. 关于Windows Server 服务器 安装tomcat部署Java Web 项母

    抄至 http://blog.csdn.net/cx0330/article/details/68957914 我遇到的问题是:不知道怎么配置,感觉在服务器上部署一个web项目,应该是很高大上,步骤应 ...

随机推荐

  1. lua 2.2 变种

    1.修改 ~= 操作符为 != 2.取消 --[[ ]] 多行注释语法 下载源码

  2. HashMap 、HashTable、TreeMap、WeakHashMap的区别是什么

    Java为数据结构中的映射定义了一个接口java.util.Map,它有4个实现类:HashTable.HashMap.TreeMap.WeakHashMap. HashMap和HashTable的区 ...

  3. 解决mysql安装出现error Nr.1045问题

    我们在windows下安装mysql最后一步时会出现Access denied for user 'root'@localhost'(using password:No)的问题.这几个问题经常出现在卸 ...

  4. mybatis学习 十六 auto_mapping实现连表查询

    只能使用多表联合查询方式. 要求:查询出的列别和属性名相同. 点字符  "."  在 SQL 是关键字符,两侧添加反单引号(Tab键上的一个字符) <select id=&q ...

  5. NOIP模拟测试1(2017081501)

    好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...

  6. canvas 实现太阳系效果

    一:创建画布 <canvas width="1000" height="1000" id="solar" style="ba ...

  7. web前端面试题库

    web前端面试题及答案   1.常用那几种浏览器测试?有哪些内核(Layout Engine)? 答: (Q1) 浏览器:IE,Chrome,FireFox,Safari,Opera.    (Q2) ...

  8. 821. Shortest Distance to a Character

    class Solution { public: vector<int> shortestToChar(string S, char C) { int len=S.length(); ve ...

  9. js生成条形码插件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. CEdit控件[转]

    1.CButton.CEdit等从CWnd继承了重要的功能: 使用CWnd::SetWindowText和CWnd::GetWindowText可以设置和获得窗口或控件上的文本.CWnd::SetFo ...