学习过:Nginx 学习
学习过:一篇文章带你搞定 SpringBoot 中使用 redis 实现 session 共享
本篇文章主要是在此基础上,利用 nginx 实现自动配置
就创建一个容器的情况下,一般有默认端口和主机对应,所以不用设置也行,但是如果有多个端口需要用时,需要指定对应的端口和主机进行映射
redis容器搭建参考:一篇文章带你搞定 SpringBoot 整合 Redis
docker 创建 jdk 容器:docker run -di --name=yolo_jdk -p 8080:8080 -p 8081:8081 jdk1.8
注意指定端口映射,docker 创建的容器一定要注意和 主机的端口映射
通过 Xftp将项目jar 包发送到主机中,然后利用 cp 命令将jar 包发送到容器中:
然后进入容器启动该项目:docker exec -it yolo_jdk /bin/bash
(1)nohup java -jar session-0.0.1-SNAPSHOT.jar --server.port=8080 >8080.log &
nohub:表示当终端关闭时,SpringBoot不要停止运行,
>8080:表示把日志打印到 8080.log 文件里(因为我们需要看springsecurity 的密码)
&: 表示让Springboot 在后台运行
(2)nohup java -jar session-0.0.1-SNAPSHOT.jar --server.port=8081 >8081.log &
(3)测试登录:注意这里需要去 8080.log 文件中找生产的 springsecurity 的密码才能登录
这里也就一个容器,所以使用默认端口 6379就可以
nginx 容器搭建:Docker 的应用部署 Nginx
确保docker 创建的 nginx 能够访问:docker run -di --name=yolo_nginx -p 80:80 nginx
这里需要注意,docker容器配置的 nginx,不能直接修改 /etc/nginx/nginx.conf
,不然会出错,应该修改/etc/nginx/conf.d/fault.conf
将其内容换为:
upstream yolo-nginx{
server 192.168.245.131:8080 weight=1;
server 192.168.245.131:8081 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://yolo-nginx;
proxy_redirect default;
#root /usr/share/nginx/html;
#index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
(1) upstream
:表示配置上游服务器
(2) yolo-nginx
:表示服务器集群的名字,这个可以随意取名字
(3) upstream
:里边配置的是一个个的单独服务
(4) weight
:表示服务的权重,意味者将有多少比例的请求从 Nginx 上转发到该服务上
(5) location
:中的 proxy_pass 表示请求转发的地址,/ 表示拦截到所有的请求,转发转发到刚刚配置好的服务集群中
(6) proxy_redirect
:表示设置当发生重定向请求时,nginx 自动修正响应头数据(默认是 Tomcat 返回重定向,此时重定向的地址是 Tomcat 的地址,我们需要将之修改使之成为 Nginx 的地址)。
这里为了快速实现,可以 通过文件复制到容器中(当然也可以使用目录挂载),避免直接编辑 vim 麻烦:
如果要使用 vim 直接才容器里编辑的话,还要安装 vim :一篇文章带你搞定如何在 Docker 创建的容器中修改配置文件
修改成功后重启 nginx:
docker 创建容器,注意端口映射
docker 创建的 nginx 容器,注意配置文件的位置:/etc/nginx/conf.d/default.conf
根据添加的内容对其进行修改即可。