前言:这里我使用的是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/
这是我存放数据卷的规范,每个技术一个文件目录
- 进入文件夹中修改配置文件名
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
- 参数说明
- -p 80:80 将容器的80端口映射到主机的80端口(前面是主机端口/后面是容器端口)
- --name 容器名
- -v 将容器的配置文件/日志等挂载到对应的目录,方便数据管理,在容器崩掉时也难查看具体情况
三、tomcat 安装(这里我们不用官方的docker 镜像,官方的tomcat镜像有一系列问题,达不到咱们的需求。将自定义镜像)
- 先准备所需要的材料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
-
将绝对路径改为相对路径
- 编写代理配置
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 容器中,并访问。