基于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 容器中,并访问。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。