最新 Docker 部署nginx Tocmat跑项目(解决springBoot启动两次的问题)
生活随笔
收集整理的這篇文章主要介紹了
最新 Docker 部署nginx Tocmat跑项目(解决springBoot启动两次的问题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.先把tomcat項目跑起來,再往nginx上面配置
1.1拉取tomcat
docker pull tomcat:81.2運行tomcat (這里使用8080端口,因為nginx使用80端口)
docker run -di -p 8080:8080 --name=mytomcat1 tomcat:81.3將war包放到tomcat的webapps目錄下(我這里默認是在root目錄下,自己確定自己的當前路徑)
docker cp project.war mytomcat1:/usr/local/tomcat/webapps/project.war1.5 去掉項目名先將他復制出來
docker cp mytomcat1:/usr/local/tomcat/conf/server.xml server.xml1.6在server.xml的Host標簽中添加
這里分為兩種情況
第一種非springBoot War項目的 linux部署
//docBase是你的項目名字 <Context path="" docBase="project" debug="0"/>第二種 springBootWar包linux部署
將appbase設置為空,docbase設置為絕對路徑
<Host name="localhost" appBase=""unpackWARs="true" autoDeploy="true"><Context path="" docBase="/usr/local/tomcat/webapps/project" debug="0"/><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host>ps;這里說下 appBase跟docBase的區別
appBase目錄表示:
1 這個目錄下面的子目錄將自動被部署為應用。
2 這個目錄下面的.war文件將被自動解壓縮并部署為應用
docBase指向了你某個應用的目錄,這個可以和appBase沒有任何關系。
總結:
如果你想自己指定路徑,那么應該在docBase里面
如果你想簡單,那么直接把他們復制到appBase下面就行
這個區別摘自:https://blog.csdn.net/chenxiaodan_danny/article/details/45397765
1.7再將文件覆蓋到容器中
docker cp server.xml mytomcat1:/usr/local/tomcat/conf/server.xml1.8重啟tomcat
docker stop mytomcat1 docker start mytomcat1這個時候訪問項目: ip:8080 是可以正常訪問的(如果有問題,請不要進行下面的操作)
2.拉取nginx
docker pull nginx2.1:創建運行nginx鏡像(走80端口)443端口用于設置https具體看另外一篇
docker run -di --name=nginx -p 80:80 -p443:443 nginx /bin/bash //創建Nginx容器2.2 測試Nginx
瀏覽器地址欄輸入:ip 是可以正常訪問的
2.3配置反向代理
將nginx.conf復制出來
docker cp nginx:/etc/nginx/nginx.conf nginx.conf2.4查看tomcat的ip地址
我這里是172.17.0.6,每個都不同自行替換哈
docker inspect mytomcat1|grep "IPAddress"2.4修改nginx.conf(將upstream tomcat的ip替換為tomcat的ip)
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; gzip_min_length 1k; gzip_buffers 4 16k; #gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary off; gzip_disable "MSIE [1-6]\.";upstream tomcat { server 172.17.0.4:8080; } server { listen 80; server_name localhost; location / { proxy_pass http://tomcat; index index.html index.htm; } }include /etc/nginx/conf.d/*.conf; }2.5 將修改后的配置文件拷貝到容器
docker cp nginx.conf nginx:/etc/nginx/nginx.conf2.6 重啟nginx
docker restart nginx2.7 測試
ip地址
總結
以上是生活随笔為你收集整理的最新 Docker 部署nginx Tocmat跑项目(解决springBoot启动两次的问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springBoot Maven改成wa
- 下一篇: Docker nginx部署阿里http