docker部署nginx + tomcat

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhanghs11/article/details/80820593
  1. 查找Docker Hub上的tomcat镜像
docker search tomcat

这里写图片描述

  1. 拉取官方上的镜像到本地
docker pull tomcat
  1. 查看本地的所有镜像
docker images -a

这里写图片描述

  1. 运行容器
    镜像是静态的,容器是动态的,容器是镜像运行时的实体。镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样。
sudo docker run -d --name tomcat -v /usr/fin/tomcat/webapps:/usr/local/tomcat/webapps -v /usr/fin/tomcat/logs:/usr/local/tomcat/logs  -p 8081:8080

-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器目录。

  1. ip:port 访问tomcat
    在这里插入图片描述

遇到的问题:

【问题1】ip:port访问tomcat提示"HTTP ERROR 404"
原因:-v /usr/fin/tomcat/webapps:/usr/local/tomcat/webapps : 宿主机目录为空,把容器/usr/local/tomcat/webapps的目录覆盖了

解决办法:
创建个/usr/fin/tomcat/webapps/ROOT/index1.html文件

这样tomcat就部署成功!!!

部署nginx

  1. 查找nginx
docker search nginx
  1. 拉取仓库镜像到本地
docker pull nginx
  1. 运行nginx容器
sudo docker run -d --name nginx_web --volumes-from tomcat -v /usr/fin/nginx/logs:/var/log/nginx -v /usr/fin/nginx/html:/usr/share/nginx/html -p 80:80  nginx 
# 查看运行容器
docker ps

在这里插入图片描述

  1. 进入nginx容器,修改nginx的配置参数
# 进入nginx容器
docker exec -ti mynginx /bin/bash

/etc/nginx/nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

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;

    upstream test_nginx {
        server 123.207.255.182:8081;
    }
    
    server {
        listen  80;
        server_name  123.207.255.182;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
            proxy_pass http://test_nginx;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         }
    }

}

检查nginx的配置文件:/usr/sbin/nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx的路径找不到,用whereis nginx搜索即可

  1. 通过nginx 访问tomcat

在这里插入图片描述
这样就可以通过80端口访问tomcat了

遇到的问题:
nginx容器不能使用vim命令:
1)进入容器后用命令apt-get update下源库
2)然后执行apt-get install vim命令

nginx 反向代理tomcat报400错误:
问题定位:
(1) nginx的/var/log/nginx/access.log,请求到nginx了
在这里插入图片描述
(2)查看 tomcat的日志信息
在这里插入图片描述

解决办法:
location中设置:proxy_set_header Host $http_host; 将头信息返回服务器

如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话
,如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败,报400错误,

猜你喜欢

转载自blog.csdn.net/zhanghs11/article/details/80820593