基于docker搭建nginx+tomcat集成

前言:这里我使用的是CentOS 7

一、Docker环境安装

  • 安装yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 为yum源添加docker仓库位置:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 配置镜像加速器,加速器地址登录你的阿里云账号,到控制台=>容器镜像服务=>镜像加速器,选择你对应的加速器(这里我也忘了是先执行这步是是下一步,建议在安装完docker-ce时把该文件重新生效一下)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 安装docker
yum install docker-ce
  • 设置docker自启及启动
sudo systemctl enable docker
sudo systemctl start docker

二、nginx安装

  • 拉取nginx1.10的docker 镜像
docker pull nginx:1.10
  • 先运行一次容器(复制配置文件)
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-d nginx:1.10
  • 将配置附件复制到指定位置(最好统一规范放,方便后期配置维护)
docker container cp nginx:/etc/nginx /mydata/nginx/

这是我存放数据卷的规范,每个技术一个文件目录

1597044461(1).png

  • 进入文件夹中修改配置文件名
mv nginx conf
  • 终止之前的容器并删除
docker stop nginx
docker rm nginx
  • 启动nginx服务
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
  • 参数说明
  1. -p 80:80 将容器的80端口映射到主机的80端口(前面是主机端口/后面是容器端口)
  2. --name 容器名
  3. -v 将容器的配置文件/日志等挂载到对应的目录,方便数据管理,在容器崩掉时也难查看具体情况

三、tomcat 安装(这里我们不用官方的docker 镜像,官方的tomcat镜像有一系列问题,达不到咱们的需求。将自定义镜像)
1597046452(1).png

  • 先准备所需要的材料tomcat 和 jdk 自行下载就行了
  • 获取catalina.sh/server.xml
tar -zxvf apache-tomcat-8.5.57.tar.gz
cd apache-tomcat-8.5.57/
cd bin/
cp catalina.sh /mydata/tomcat-8.5.57/image/
cd ..
cd conf/
cp server.xml /mydata/tomcat-8.5.57/image/
rm apache-tomcat-8.5.57 -rf
  • 编写Dockerfile
vim Dockerfile
FROM centos:7

# 维护者信息
MAINTAINER pengbojia

# 将 jdk 和 tomcat 添加到镜像centos的/usr/local/目录下
ADD jdk-8u151-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.57.tar.gz /usr/local/

# 覆盖相关文件
COPY server.xml /usr/local/apache-tomcat-8.5.57/conf/

# 添加环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.57
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
ENV TZ="Asia/Shanghai"
ENV JAVA_OPTS="\
-server \
-Xms3g \
-Xmx3g \
-Xmn512m \
-Xss512K \
-Dfile.encoding=UTF-8 \
-verbose:gc \
-XX:+UseConcMarkSweepGC \
-XX:MaxTenuringThreshold=10 \
-XX:+ExplicitGCInvokesConcurrent \
-XX:GCTimeRatio=19 \
-XX:+UseParNewGC \
-XX:+UseCMSCompactAtFullCollection \
-XX:CMSFullGCsBeforeCompaction=10 \
-XX:+CMSClassUnloadingEnabled \
-XX:+CMSParallelRemarkEnabled \
-XX:CMSInitiatingOccupancyFraction=50 \
-Xnoclassgc \
-XX:SoftRefLRUPolicyMSPerMB=0"

# 暴露8080端口
EXPOSE 8080

# 容器启动时运行tomcat(这个一定要加不然容器无法启动)
CMD /usr/local/apache-tomcat-8.5.57/bin/catalina.sh run
  • 创建镜像
docker build -t tomcat-8.5.57:v2 .
  • 启动tomcat 服务
docker run -p 8093:8080 --name my_tomcat -itd tomcat-8.5.57:v2 

四、nginx +tomcat集成

  • 进入nginx配置文件中
cd nginx/conf/
vim nginx.conf
  • 将绝对路径改为相对路径


    image.png
  • 编写代理配置
cd conf.d/
vim upstream.conf
 upstream proxy-xlgw {#192.168.1.6:8093 是你的ip:tomcat端口号
        server 192.168.1.6:8093 weight=5 max_fails=2 fail_timeout=30s;
        keepalive 20;
        }
vim my.conf
server
{
        listen 80;
        server_name pbj.com;

        location /
        {
                proxy_pass http://proxy-xlgw;
                proxy_next_upstream http_502 http_504 error timeout invalid_header;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|html|shtml|htm)$
        {
                #proxy_cache tmpcache;
                proxy_cache_valid 200 304 12h;
                proxy_cache_valid 301 302 1m;
                proxy_cache_valid any 1m;
                proxy_cache_key $host$uri$is_args$args;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_pass http://proxy-xlgw;
        }
        location /favicon.ico{
          return 200;
          access_log off;
        }
}

重启nginx 和 tomcat 容器

docker stop nginx
docker stop tomcat-8.5.57
docker start nginx
docker start tomcat-8.5.57

五、配置本地host文件

在文件最下方添加
192.168.1.6   pbj.com

六、访问tomcat

到web访问pbj.com,就能访问tomcat 了,后面留点简单的东西给大家踩把项目部署到tomcat 容器中,并访问。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352