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
通过页面访问看下是否访问成功
我只写了一个接口
访问结果:
3.通过docker安装的Nginx配置反向代理实现屏蔽端口加固定接口前缀
3.1.docker安装Nginx并把文件挂载指定目录
3.1.1.拉取Nginx镜像
docker pull nginx
查看镜像
docker image list |grep nginx
3.1.2.创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html
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/
可以看到文件都复制到挂载目录了.
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 ps -a
下面我们测一下挂载目录有没有生效
修改一下挂载目录的html文件下的内容
文件没有写权限 就赋权限
赋权命令:
sudo chmod 777 /home/nginx/html/index.html
运行:
vi /home/nginx/html/index.html
再次访问Nginx页面
可以确定挂载目录已经生效
3.2. Nginx配置反向代理
因为是docker安装的Nginx
vi /home/nginx/conf/nginx.conf
还有个conf.d的文件夹
我们已经挂载到 /home/nginx/conf/conf.d/ 文件夹下
打开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;
}
}
编辑完重启Nginx容器
docker restart alice-nginx
我们访问一下接口 看是否能通
http://1xx.x.xx.x3/alice/health/health-status
注意:
我这个接口是没有alice的
Nginx这么配置 会自动截取调alice 你们那些配置完报404的看下是不是这个原因呢
location /alice/ {
proxy_pass http://springboot项目部署地址IP:84/;
}