基于docker容器web服务器集群部署

项目架构图解

架构图

场景说明

基于docker容器引擎,分别pull nginx的docker镜像、tomcat的docker镜像(具体镜像使用参考官方文档说明 )配置nginx反向代理功能、配置Tomcat集群。实现应用服务器集群部署,提高服务器的承载能力。

  • docker官方文档地址
    https://hub.docker.com/
    docker

在docker官方搜索需要拉取的镜像

docker安装步骤见上篇博客
https://www.jianshu.com/p/fe438fac7cff


具体部署步骤如下:

  • 分别拉取nginx、Tomcat的docker镜像
docker pull nginx
docker pull tomcat
  • 查看Linux宿主机下的镜像详情
[root@bogon ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              b56d8850aed5        23 hours ago        529MB
nginx               latest              2073e0bcb60e        5 days ago          127MB
centos              latest              589dc4d40385        3 weeks ago         237MB

配置nginx反向代理

  • 在宿主机创建nginx目录
mkdir -p /data/nginx/{conf,conf.d,html,log}
[root@bogon nginx]# pwd
/data/nginx
[root@bogon nginx]# ll
总用量 0
drwxr-xr-x. 2 root root 45 2月   7 17:42 conf
drwxr-xr-x. 3 root root 34 2月   7 15:20 html
drwxr-xr-x. 2 root root 39 2月   7 17:43 logs
  • 配置nginx反向代理服务器地址
   server {
        listen       8090;
        server_name  localhost;
       # root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
       #   include /etc/nginx/default.d/*.conf;

        location / {
        proxy_pass http://localhost; 
        }
        
            upstream localhost{
                server 192.168.1.90:8071 weight=1;
                server 192.168.1.90:8072 weight=1;
    }
  • nginx配置文件配置好后,就可以启动docker容器的nginx镜像,加载刚才宿主机下的nginx.conf配合文件和日志。然后启动nginx命令如下:
docker run --name nginx-server -d -p 8070:8090  -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /data/nginx/logs:/var/log/nginx -d docker.io/nginx
  • 启动docker的tomcat镜像,这里我以两个tomcat集群示例。启动命令:
tomcat服务器1:
docker run -d --name=Application-server1 -p 8071:8080 tomcat
tomcat服务器2:
docker run -d --name=Application-server2 -p 8072:8080 tomcat
  • 把打包的项目放到webapps下即可。这里简单示例:
[root@bogon conf]# docker exec -it Application-server1 bash
root@c42ed9de5100:/usr/local/tomcat# cd webapps
root@c42ed9de5100:/usr/local/tomcat/webapps# pwd
/usr/local/tomcat/webapps
root@c42ed9de5100:/usr/local/tomcat/webapps# cd index/
root@c42ed9de5100:/usr/local/tomcat/webapps/index# cat index.html 


    
         Application-server1
    
    
         Application-server1
    

  • 可以分别通过不同的服务器地址访问已正常访问:
  • 查看docker容器的启动详情:

[root@bogon conf]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
5fc6a8e02281        nginx               "nginx -g 'daemon of…"   22 hours ago        Up 22 hours         80/tcp, 0.0.0.0:8070->8090/tcp   nginx-server
a92ec9e07f9c        tomcat              "catalina.sh run"        23 hours ago        Up 23 hours         0.0.0.0:8072->8080/tcp           Application-server2
c42ed9de5100        tomcat              "catalina.sh run"        24 hours ago        Up 23 hours         0.0.0.0:8071->8080/tcp           Application-server1
db9a8a85bf30        centos              "/bin/bash"              3 weeks ago         Up 3 weeks          0.0.0.0:8888->80/tcp             sx
[root@bogon conf]# 

通过nginx反向代理功能,用户访问url:http://192.168.1.90:8070/index/index.html

  • 访问页面如下

docker-compose 安装流程

  • 拉取镜像
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 修改配置文件
sudo chmod +x /usr/local/bin/docker-compose
  • 查看版本
$ docker-compose --version
  • nginx技术二--反向代理

更多技术分享和免费视频资料首发于公众号:请关注微信公众号--Coding测试 获取


docker 构建SpringBoot jar镜像流程

  • Dockerfile
# 设置本镜像需要使用的基础镜像
FROM  java8  
# 把jar包添加到镜像中
ADD java-elf-1.0-SNAPSHOT.jar java-elf-1.0-SNAPSHOT.jar
# 镜像暴露的端口
EXPOSE 8010
RUN bash -c 'touch app.jar'
# 容器启动命令
ENTRYPOINT [java,-jar,app.jar]
# 设置时区
RUN bincp usrsharezoneinfoAsiaShanghai etclocaltime && echo 'AsiaShanghai' etctimezone
  • 构建镜像命令
#注意最后的. 代表当前路径
docker build -t test:v1.0 .
  • 查看构建后的docker镜像
docker images
  • 启动测试容器
docker run -p 8888:8099 -it --name=test test /bin/bash

你可能感兴趣的:(基于docker容器web服务器集群部署)