docker启动springboot项目构建的镜像 并通过Nginx配置反向代理

1.首先准备好springboot项目构建的docker镜像

如果不会的去看我另一篇博客
docker构建springboot项目镜像

docker image list |grep alice

在这里插入图片描述

2.通过命令启动镜像

注意: -p后面的端口号 前面可以随便写:后面必须是你springboot项目中application.yml的端口,不然 你启动起来 访问不通

server:
  port: 13500

启动命令:

docker run -d --name alice -p 84:13500 alice:1.0.0

在这里插入图片描述
查看启动中的容器:

docker ps -a

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第1张图片
通过页面访问看下是否访问成功
我只写了一个接口
docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第2张图片
访问结果:
docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第3张图片

3.通过docker安装的Nginx配置反向代理实现屏蔽端口加固定接口前缀

3.1.docker安装Nginx并把文件挂载指定目录

3.1.1.拉取Nginx镜像

docker pull nginx

查看镜像

docker image list |grep nginx

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第4张图片

3.1.2.创建挂载目录

mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第5张图片

3.1.3.创建Nginx容器并把相关文件复制到挂载目录

因为我之前装了harbor仓库,harbor里有Nginx我要在装就得改名

# 生成容器
docker run --name alice-nginx -p 80:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp alice-nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp alice-nginx:/etc/nginx/conf.d/ /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp alice-nginx:/usr/share/nginx/html /home/nginx/

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第6张图片
docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第7张图片
docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第8张图片
可以看到文件都复制到挂载目录了.

3.1.4. 把现在这个Nginx容器删掉

docker rm -f alice-nginx

在这里插入图片描述

3.1.5. 重新创建并运行Nginx容器

docker run \
-p 80:80 \
--name alice-nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第9张图片

可以看到已经成功创建并运行

docker ps -a

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第10张图片
docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第11张图片

下面我们测一下挂载目录有没有生效
修改一下挂载目录的html文件下的内容
文件没有写权限 就赋权限
赋权命令:

sudo chmod 777 /home/nginx/html/index.html

运行:

vi /home/nginx/html/index.html

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第12张图片
再次访问Nginx页面
docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第13张图片

可以确定挂载目录已经生效

3.2. Nginx配置反向代理

因为是docker安装的Nginx

 vi /home/nginx/conf/nginx.conf

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第14张图片
还有个conf.d的文件夹
我们已经挂载到 /home/nginx/conf/conf.d/ 文件夹下
docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第15张图片
打开default.conf

vi /home/nginx/conf/conf.d/default.conf

配置文件代码:

server {
    listen       80;
    listen  [::]:80;
    server_name  服务器公网IP;


    location / {
       root   /usr/share/nginx/html;
       index  index.html index.htm;
    }
    
    location /alice/ {
    
    proxy_pass http://springboot项目部署地址IP:84/;
    
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第16张图片
编辑完重启Nginx容器

docker restart alice-nginx

我们访问一下接口 看是否能通
http://1xx.x.xx.x3/alice/health/health-status
docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第17张图片
注意:
我这个接口是没有alice的
Nginx这么配置 会自动截取调alice 你们那些配置完报404的看下是不是这个原因呢

	location /alice/ {
    proxy_pass http://springboot项目部署地址IP:84/;
    }

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理_第18张图片

你可能感兴趣的:(docker,spring,boot,nginx)