Docker之tomcat和nginx的部署

本文详细介绍如何在Docker中利用镜像挂载实现宿主机与容器间的文件共享,包括解决权限问题的方法。同时,深入讲解Tomcat和Nginx的容器化部署步骤,涵盖镜像拉取、容器创建及静态文件配置等关键环节。

1.镜像挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如:

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

如果你共享的是多级的目录,可能会出现权限不足的提示。

这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题

2.tomcat的部署

(1)拉取镜像

docker pull tomcat:7-jre7

(2)创建容器

创建容器  -p表示地址映射

docker run -di --name=mytomcat -p 9000:8080 
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

为了方便项目的部署,我们将wepapps目录映射到linux服务器的目录下。

为了方便测试,我们将一个war包放入该虚拟机的/usr/local/tomcat/webapps目录下

然后访问你的虚拟机ip地址:9090/项目名

这里我的虚拟机ip为192.168.142.129,引入的项目为CAS单点登陆的开源项目

 

3. Nginx部署

(1)拉取镜像

docker pull nginx

(2)创建Nginx容器

docker run -di --name=mynginx -p 80:80 nginx

(3)静态文件拷贝

我们在 创建nginx容器的时候,并没有使用镜像挂载。此时我们想要将我们项目的静态页面放到nginx中让我们访问。

先进入nginx容器中

docker exec -it mynginx /bin/bash

查看nginx的配置文件

cat /etc/nginx/nginx.conf

内容如下:

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
​
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
​
    access_log  /var/log/nginx/access.log  main;
​
    sendfile        on;
    #tcp_nopush     on;
​
    keepalive_timeout  65;
​
    #gzip  on;
​
    include /etc/nginx/conf.d/*.conf;
}
​

进入conf.d文件夹下查看default.conf

cat /etc/nginx/conf.d/default.conf

内容如下:

server {
    listen       80;
    server_name  localhost;
​
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
​
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
​
    #error_page  404              /404.html;
​
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
​

可以看到html在/usr/share/nginx/html目录下

我们将准备好的静态文件夹拷贝到该目录下

 docker cp html mynginx:/usr/share/nginx/

然后在浏览器上就可以访问了

### 使用 Docker 配置 Tomcat Nginx 实现负载均衡 #### 1. 准备工作 为了确保顺利配置,需先确认已成功安装并运行 Docker 环境。接着创建所需的镜像文件用于启动 TomcatNginx 容器。 对于 Tomcat 容器而言,在构建过程中应保证其内部存在 `/usr/local/tomcat/webapps` 文件夹以便放置 Web 应用程序,并且建议预先安装 `vim` 工具方便后续调试操作[^3]。 同样地,针对 Nginx 容器也需要提前部署好必要的编辑工具如 `vim` ,这有助于后期调整配置文件时更加便捷高效。 #### 2. 启动多个 Tomcat 容器实例 基于官方提供的基础镜像来定制专属的服务端口映射规则,比如可以分别指定不同的主机端口号对应到容器内的默认 HTTP 接入点(通常是8080),从而区分各个独立的应用服务进程: ```bash docker run -d --name tomcat1 -p 9080:8080 tomcat:latest docker run -d --name tomcat2 -p 9081:8080 tomcat:latest ``` 上述命令会依次拉取最新版本的 Tomcat 镜像并以前台守护模式启动两个新的容器实例,同时将本地机器上的特定端口绑定至各自容器中的标准HTTP监听地址[^1]。 #### 3. 修改 Nginx 的配置文件以支持反向代理功能 进入已经准备好的 Nginx 容器内修改位于 `/etc/nginx/conf.d/default.conf` 下面的核心设置项,添加如下所示的内容定义上游服务器组以及设定访问路径转发逻辑: ```nginx upstream backend { server tomcat1:8080; server tomcat2:8080; } server { listen 80; server_name localhost; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 这段脚本的作用在于告诉 Nginx 当接收到客户端请求时应该怎样处理——即把流量分发给后端实际提供业务响应的一系列 Tomcat 进程之一;其中涉及到的一些头部字段则用来传递原始连接信息给目标应用层组件,便于日志记录等功能需求。 完成以上更改之后记得保存退出再重启一次 Nginx 来使新策略生效: ```bash docker restart nginx_container_id_or_name ``` 此时便实现了基本意义上的动态分配网络资源机制,提高了系统的并发承载能力可用性水平。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值