一:安装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. 数据库MySQL 之 索引原理与慢查询优化

    数据库MySQL 之 索引原理与慢查询优化 浏览目录 索引介绍方法类型 聚合索引辅助索引 测试索引 正确使用索引 组合索引 注意事项 查询计划 慢查询日志 大数据量分页优化 一.索引介绍方法类型 1. ...

  2. 装箱问题(NOIP2001&水题测试2017082401)

    题目链接:装箱问题 这题经典的01背包. 动规. 设计状态f[n][V]表示前n个物体放在V中的最大体积是多少. 所以代码如下: #include<bits/stdc++.h> using ...

  3. 2019.01.04 bzoj2962: 序列操作(线段树+组合数学)

    传送门 线段树基础题. 题意:要求维护区间区间中选择ccc个数相乘的所有方案的和(c≤20c\le20c≤20),支持区间加,区间取负. 由于c≤20c\le20c≤20,因此可以对于每个线段树节点可 ...

  4. 2018.11.09 bzoj4773: 负环(倍增+floyd)

    传送门 跟上一道题差不多. 考虑如果环上点的个数跟最短路长度有单调性那么可以直接上倍增+floyd. 然而并没有什么单调性. 于是我们最开始给每个点初始化一个长度为0的自环,于是就有单调性了. 代码: ...

  5. 2018.11.05 NOIP模拟 相交(dfs序+bit)

    传送门 又TMTMTM考原题真是服. 考虑到两条路径相交一定满足某一条的lcalcalca在另外一条路径上面. 于是分开统计有多少个lcalcalca在当前路径上面以及有多少个路径经过了当前的lcal ...

  6. 文字过多以省略号代替,放在文字上会显示title信息提示

    第一种: <td style="text-align:left; word-wrap:break-word;" title="${b.remarks}"& ...

  7. redis 的一主二从三哨兵模式

    概述 在部署redis 的时候,如果redis宕机,缓存将不可用,redis提供了哨兵模式保证redis实现高可用. 即一台主机两台从机,三台哨兵主机,如果主实例宕机,哨兵将将一台从机升级为主机.实现 ...

  8. python:OS模块

    r"""OS routines for NT or Posix depending on what system we're on. This exports: - al ...

  9. 20155205 2016-2017-2 《Java程序设计》第2周学习总结

    20155205 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 变量 变量在命名时有一些规则,它不可以使用数字作为开头,也不可以使用特殊字符. 对常用忽略符 ...

  10. Java图形处理

    paint.repaint.update方法   Graphics类.     用于实现组件的画图.包括组件对象,坐标,区域,颜色,字体,画图模式等   Color类     用来封装颜色   Gra ...