Nginx反向代理到多个Docker 笔记!

前言

现在我有一台CentOS8.2的测试服务器。我希望在里面运行3个Docker容器。分别用来运行vue编写的网站前端页面,网站后台静态页面和.NET 5 WebAPI。

当用户访问 http://119.28.135.102 可以打开网站前端页面,当用户访问 http://119.28.135.102/admin 可以打开网站后台页面。

思考了一番后大致流程如下图所示,用户请求Centos服务器上的Nginx服务器,然后该服务器通过对用户请求目标进行过滤,最后反向代理到不同的Docker中。

Docker容器1和Docker容器2里面要安装nginx,作为前端和后台页面的web服务器。Docker容器3需要安装.NET5运行时,用来运行WebApi。

Nginx反向代理到多个Docker 笔记!_docker

一、制作网站前端页面的Docker镜像

pc文件夹目录结构

Nginx反向代理到多个Docker 笔记!_nginx_02

dist文件夹里就是vue项目build之后的静态页面。

Nginx反向代理到多个Docker 笔记!_服务器_03

Dockerfile内容:

# Base Image设置基础镜像 FROM nginx # 将dist目录复制到 Docker容器中的/usr/share/nginx/html/目录下 COPY dist/ /usr/share/nginx/html/ # 将nginx.conf文件复制到/etc/nginx/nginx.conf COPY nginx.conf /etc/nginx/nginx.conf

nginx.conf内容:

user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/host.access.log ; error_log /var/log/nginx/error.log; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } }

接下来用 FileZilla Client 远程连接到服务器

Nginx反向代理到多个Docker 笔记!_html_04

连接成功后把pc目录拷贝到 /home 目录下,然后进入到/home/pc目录,执行命令 【docker build -t pc .】构建PC前端页面的docker镜像。

Nginx反向代理到多个Docker 笔记!_html_05

镜像构建完成后

【docker images】:查看镜像

【docker run -d -p 127.0.0.1:3000:80 -v /home/pc/pclog:/var/log/nginx pc】:启动一个容器

-d:后台运行

-p 127.0.0.1:3000:80 以内网方式运行,并且把宿主机的3000端口映射到容器的80端口上

-v /home/pc/pclog:/var/log/nginx:将宿主机的/home/pc/pclog路径映射到容器的/var/log/nginx,因为docker不保存数据,所以日志文件需要挂载到本机存储。

pc:镜像名

【curl http://127.0.0.1:3000】:测试网页是否能访问,可以看到,页面已经能返回正确数据了。

Nginx反向代理到多个Docker 笔记!_docker_06

二、制作网站后台页面的Docker镜像

后台镜像的制作和前端镜像制作流程是一样的

将admin文件夹上传到服务器 /home目录下

Nginx反向代理到多个Docker 笔记!_docker_07

Nginx反向代理到多个Docker 笔记!_docker_08

进入到服务器的 /home/admin输入命令【docker build -t admin .】

Nginx反向代理到多个Docker 笔记!_前端页面_09

制作完成镜像后输入命令 【docker run -d -p 127.0.0.1:4000:80 -v /home/admin/pclog:/var/log/nginx -t admin】启动一个容器。

此时docker ps可以看到有两个正在运行的容器,并且输入命令【curl http://127.0.0.1:4000】可以正确返回网页数据。

Nginx反向代理到多个Docker 笔记!_前端页面_10

三、制作WebApi的Docker镜像。

原文链接:https://blog.51cto.com/u_15127602/3817799

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享