restfull风格的架构与自动部署已成为现在的主流了,今天我就来讲讲在docker上自动部署Nginx,并且反向代理与centos7服务器上数据交互。
一、docker下载centos7镜像,docker pull centos:7 ;
二、将项目打包成jar包
三、因为我的docker是在虚拟机下运行的,我现在将打好的jar包上传到虚拟机springboot目录下
四、在docker下运行centos7 #docker run –name centos -itd centos:7
五、将虚拟机啊springboot下的jar包上传到我们运行的容器centos里,这里我直接用的是docker的copy功能,也可以在运行容器的时候用挂载功能 -v /springboot/springboot.jar:/springboot/(挂载的时候,容器里不存在的目录是会自己创建的)。
docker cp /springboot/springboot.jar centos:/springboot/
六、容器centos7是缺少java运行环境的,我们到oracle的官网去下载一下java1.8的jar包,我是用Windows去官网上下载的,如果在容器里使用wget下载的话,在解压的时候,会报错的,因为wget默认是不同意oracle上的规则的。所以还是老老实实的用Windows访问官网界面,下载后,放到虚拟机的java目录下
将下载好的jar包上传到容器centos的java目录下
#docker cp /java/jdk-8u161-linux-x64.tar.gz centos:/java/
七、进入centos容器,#docker exec -it centos bash并在容器下解压配置java环境,这一步我直接跳过吧,在Linux在配置java环境,这个应该不难吧,我就不一一说了。
八、让容器启动,我们就运行我们的springboot项目,#vi /etc/bashrc
加上java -jar /springboot/springboot.jar, source /etc/bashrc
exit退出容器
九、将我们的容器centos生成镜像springboot:1.0 # docker commit centos springboot:1.0
docker images就能看到我们生成的镜像了
十、运行容器springboot:1.0并且暴露端口8080 #docker run –name springboot -itd -p 8080:8080 springboot:1.0
十一,运行容器Nginx并且暴露端口80 # docker run –name nginx –link springboot:sp -d -p 80:80 nginx(–link,是让两个容器进行数据交互),进入Nginx容器内#docker exec -it nginx bash,并且查看hosts文件,看看–link的容器的IP地址cat /etc/hosts
将Nginx的配置文件copy到虚拟机的root下,进行反向代理配置,之所以拷出去,是因为在Nginx容器内,vi命令是不管用的,只能将其copy出来修改,exit退出容器;#docker cp nginx:/etc/nginx/conf.d/default.conf /root/
将如下配置添加进去:
}
location /tyy {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.17.0.2:8080;
}
(只要进行/tyy访问,Nginx就将它交给后台处理);
(172.17.0.2,这个IP地址就是Nginx hosts文件中的那个地址,切记,只有这个地址,数据才能交互,不然进行数据访问的时候,Nginx会报错502,也就是服务器当机。)
再将default.conf文件copy回Nginx容器内,#docker cp /root/default.conf nginx:/etc/nginx/conf.d/
将我们的静态界面也copy到Nginx容器内,# docker cp /springboot/html nginx:/usr/share/nginx/
下面是我的html简单结构跟简单的html代码,只是测试,所以写得简单,还望包涵;
原文链接:https://blog.csdn.net/qq_39466006/article/details/79877018