千家信息网

如何利用docker-compsoe部署前后端分离的项目

发表于:2025-01-27 作者:千家信息网编辑
千家信息网最后更新 2025年01月27日,这篇文章主要介绍如何利用docker-compsoe部署前后端分离的项目,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!开始动手其实我也是才开始了解docker的。所以有很多不明
千家信息网最后更新 2025年01月27日如何利用docker-compsoe部署前后端分离的项目

这篇文章主要介绍如何利用docker-compsoe部署前后端分离的项目,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

开始动手

其实我也是才开始了解docker的。所以有很多不明白的地方,例如在docker里面,是通过image生成一个container,那么这个container,就可以当作是一个独立的系统,这个系统也就有自己独立的端口。那么就像我们刚刚那样的需求,假设我们的前端在 container1 里面暴露80端口,同时映射到宿主机的80端口,后端在 container2 里面暴露3000端口,同时映射到宿主机的3000端口。那我们反向代理请求的时候,是通过宿主机来反向代理呢,还是通过container来实现呢?我在网上查阅并学习了很多其他大佬的文章,还有官网的文档。发现直接通过container就可以实现这种需求。为什么呢?因为docker-compose,会将所有的container构建在同一网络下,我们要找其他container,我们只需通过docker-compose里面的 service name 即可找到。 下面先来看看我们的目录:

vueMusic ├─ .git ├─ .gitignore ├─ LICENSE ├─ README.md ├─ babel.config.js ├─ dist ├─ docker-compose.yml ├─ docs ├─ nginx.conf ├─ package-lock.json ├─ package.json ├─ public ├─ server ├─ src └─ vue.config.js

dist是我们的前端项目,server是我们的后端项目。 下面再来看看我们的 docker-compose.yml :

version: '3' services: music-web: #前端项目的service name   container_name: 'music-web-container' #容器名称   image: nginx #指定镜像   restart: always   ports:   - 80:80   volumes:    - ./nginx.conf:/etc/nginx/nginx.conf #挂载nginx配置   - ./dist:/usr/share/nginx/html/  #挂载项目   depends_on:   - music-server music-server:  #后端项目的service name   container_name: 'music-server-container'   build: ./server #根据server目录下面的Dockerfile构建镜像   restart: always   expose:   - 3000

可以看见,我们通过 volumes 属性将宿主机的 nginx.conf 挂载到容器内的nginx配置文件,用来覆盖原有的配置文件,同时也将 dist 挂载到容器内。我们将前端项目的容器暴露并映射给宿主机的80端口,我们将后端项目的容器暴露3000端口。那么我们在哪里实现反向代理请求呢?请看 nginx.conf :

#user nobody; worker_processes 1; events {   worker_connections 1024; } http {   include    mime.types;   default_type application/octet-stream;   sendfile    on;   #tcp_nopush   on;   #keepalive_timeout 0;   keepalive_timeout 65;   #gzip on;   gzip on;   gzip_min_length 5k;   gzip_buffers   4 16k;   #gzip_http_version 1.0;   gzip_comp_level 3;   gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;   gzip_vary on;   server {     listen 80;     server_name www.xieyezi.com;     #音乐app项目     location / {     index index.html index.htm;  #添加属性。      root /usr/share/nginx/html;  #站点目录     }     #音乐app项目设置代理转发     location /api/ {     proxy_pass http://music-server:3000/;     }     error_page  500 502 503 504 /50x.html;     location = /50x.html {       root  /usr/share/nginx/html;     }   } }

可以看上面的 proxy_pass http://music-server:3000/; 。其中 music-server 是我们后端项目的服务名,我们通过服务名来找到这个容器,这样就实现了反向代理。

以上是"如何利用docker-compsoe部署前后端分离的项目"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0