Docker部署多个WebApp

Docker部署多个WebApp

使用Docker部署多个webapp,相互隔离,使用不的端口号,互不影响的独立服务。
基本思路:
1)创建一个tomcat的image。
2)基于tomcat image,创建多个WebApp的Contailer.
3)挂载Contailer的logs, webapp目录到本机目录,实现多个WebApp的部署。

创建tomcat image

  • 建立临时目录

    /root/tmp/webapp
    
  • 建立Dockerfile

# tomat:7
FROM tomcat:7  
#
MAINTAINER "test <xxx@xx.com>"
# 启动脚本,放到Docker /home目录之中
ADD ./start.sh /home
# 启动命令
CMD ["/home/start.sh"] 
  • 创建启动脚本start.sh
 1 #!/bin/bash
 5 sh /usr/local/tomcat/bin/startup.sh
 6 tail -f /usr/local/tomcat/logs/catalina.out
  • 建立测试目录

    loris-test
    
  • 测试目录结构

    Dockerfile  loris-test  start.sh
    
  • 建立tomcat image

docker build -t loris-test .

docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
loris-test          latest              7bc5b37308ad        57 seconds ago      357MB
friendlyhello       latest              919958ceacc3        5 days ago          132MB

“loris-test” 刚刚建立的tomcat image.

创建多个Container

  • 第一个webapp container (loris-test1 4004:8080)
docker run -d -p 4004:8080 -v /home/websoft/loris/loris-test1/logs/:/usr/local/tomcat/logs/  -v /home/websoft/loris/loris-test1/webapps:/usr/local/tomcat/webapps/ --name loris-test1  loris-test

说明:
1)-d -p 4004:8080; 后台运行,使用4004端口号映射8080端口。
2)-v /home/websoft/loris/loris-test1/logs/:/usr/local/tomcat/logs/;
挂载本机目录“/home/websoft/loris/loris-test1/logs/”到docker”/usr/local/tomcat/logs/” 用于实时查看loris-test1的log信息。
3)-v /home/websoft/loris/loris-test1/webapps:/usr/local/tomcat/webapps/ ;
再挂载本机目录“/home/websoft/loris/loris-test1/webapps”到docker目录“/usr/local/tomcat/webapps/” ;
用于部署webapp,
4)–name loris-test1 container的名称.
5) loris-test. 从刚刚创建的”loris-test” image建立container.

  • 第二个webapp container (loris-test2 4005:8080)
docker run -d -p 4005:8080 -v /home/websoft/loris/loris-test2/logs/:/usr/local/tomcat/logs/  -v /home/websoft/loris/loris-test2/webapps:/usr/local/tomcat/webapps/ --name loris-test2  loris-test

调整端口号,container的名称,可以建议很多container,使用相同的image.

测试

  • loris-test1 部署测试 webapp
    部署一个最简单的webapp test到”/home/websoft/loris/loris-test1/webapps”

    test/index.jsp  META-INF  WEB-INF
    
  • 重启 loris-test1

docker restart loris-test1
  • wget
wget http://localhost:4004/test
[root@izhp39lknawryomnia12roz test]# wget http://localhost:4004/test
--2018-09-03 14:17:28--  http://localhost:4004/test
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:4004... connected.
HTTP request sent, awaiting response... 302 Found
Location: /test/ [following]
--2018-09-03 14:17:28--  http://localhost:4004/test/
Reusing existing connection to localhost:4004.
HTTP request sent, awaiting response... 200 OK
Length: 66 [text/html]
Saving to: ‘test.8’

100%[=====================================================================================================================================================>] 66          --.-K/s   in 0s      

2018-09-03 14:17:28 (17.4 MB/s) - ‘test.8’ saved [66/66]

可以正常工作。

同样的方法测试loris-test2,也可以正常工作。

    原文作者:另中
    原文地址: https://www.jianshu.com/p/5ede5efbbf15
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞