使用Docker部署前后端分离项目的完整流程

三奇 关注

收藏于 : 2024-04-10 23:40   被转藏 : 1   

在CentOS上使用Docker部署前后端分离项目的完整流程,包括Django后端、Vue前端、Redis、Nginx、RabbitMQ和MySQL的配置。

大纲

Docker化Django后端 - 如何将Django项目容器化。

Docker化Vue前端 - 如何将Vue项目容器化。

使用Docker部署Redis - 设置Redis作为缓存和排序数据库。

使用Docker部署Nginx - 配置Nginx作为负载均衡器。

使用Docker部署RabbitMQ - 设置RabbitMQ作为消息队列。

使用Docker部署MySQL - 设置MySQL作为存储数据库。

Docker Compose配置 - 如何使用Docker Compose一次性管理所有服务。

测试和部署 - 如何测试你的配置确保一切正常工作。


步骤1:安装Docker和Docker Compose

1. 安装Docker:

   在CentOS上,首先需要安装Docker。可以通过以下命令安装:

                    
                      
                        sudo yum 
                        
                          install
                        
                         -y yum-utils device-mapper-persistent-
                        
                          data
                        
                         lvm2
                      
                    
                    
                      
                        sudo yum-config-manager 
                        
                          --add-repo https://download.docker.com/linux/centos/docker-ce.repo
                        
                      
                    
                    
                      
                        sudo yum 
                        
                          install
                        
                        -y docker-ce docker-ce-cli containerd.io
                      
                    
                  

2. 启动Docker服务:

                    
                      
                        
                          sudo
                        
                         systemctl start docker
                      
                    
                  

3. 安装Docker Compose:

   Docker Compose可以通过以下命令安装:

                    
                      
                        sudo curl -L 
                        
                          "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-
                          
                            $(uname -s)
                          
                          -
                          
                            $(uname -m)
                          
                          "
                        
                         -o /usr/
                        
                          local
                        
                        /bin/docker-compose
                      
                    
                    
                      
                        sudo chmod +x /usr/
                        
                          local
                        
                        /bin/docker-compose
                      
                    
                  

步骤2:准备应用环境

Django后端

1. 创建Dockerfile:

在Django项目的根目录下创建Dockerfile,例如backend/Dockerfile:

                    
                      
                        
                          FROM
                        
                        
                          python:3.8
                        
                      
                    
                    
                      
                        
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

2. 准备requirements.txt:

   确保backend/requirements.txt包含了所有必要的依赖。

Vue前端

1. 创建Dockerfile:

   在Vue项目的根目录下创建Dockerfile,例如`frontend/Dockerfile`:

                    
                      
                        
                          FROM
                        
                        
                          node:lts-alpine
                        
                      
                    
                    
                      
                        
WORKDIR/app
COPYpackage*.json ./
RUNnpm install
COPY. .
RUNnpm run build

步骤3:配置Redis、Nginx、RabbitMQ和MySQL


1. Redis配置:

   通常,使用Docker部署Redis不需要特别的配置文件,除非你有特定的配置需求。可以直接在`docker-compose.yml`中配置。

2. Nginx配置:

   创建一个Nginx配置文件`nginx/default.conf`,配置前后端服务的代理。一个基本的配置示例是:

                    
                      
                        
                          server
                        
                         {
                      
                    
                    
                      
                        
listen 80 ;
location / {
proxy_pass http://frontend:80;
}
location /api/ {
rewrite ^/api/(.*)$ / $1 break ;
proxy_pass http://backend:8000;
}
}

3. RabbitMQ和MySQL:

   对于RabbitMQ和MySQL,通常情况下,你可以使用默认的Docker镜像并通过环境变量进行必要的配置。

步骤4:编写Docker Compose文件

在项目的根目录下创建 docker-compose.yml ,以便一次性启动所有的服务:

                    
                      
                        
                          version
                        
                        : '3'
                      
                    
                    
                      
                        
services :
db :
image : mysql:5.7
environment :
MYSQL_DATABASE : 'yourdb'
MYSQL_USER : 'user'
MYSQL_PASSWORD : 'password'
MYSQL_ROOT_PASSWORD : 'rootpassword'
redis :
image : redis:alpine
rabbitmq :
image : rabbitmq:3-management
backend :
build : ./backend
command : python manage.py runserver 0.0.0.0:8000
volumes :
- ./backend:/code
depends_on :
- db
- redis
frontend :
build : ./frontend
volumes :
- ./frontend:/app
nginx :
image : nginx:alpine
ports :
- "80:80"
volumes :
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on :
- backend
- frontend

步骤5:构建和启动服务

运行以下命令构建并

启动所有服务:

                    
                      
                        docker-compose up 
                        
                          --build
                        
                      
                    
                  


步骤6:测试项目


- **测试Django后端**:

  访问`http://your-server-ip/api/`,应能看到Django应用的响应。

- **测试Vue前端**:

  访问`http://your-server-ip/`,应能看到Vue应用的界面。

- **Redis、RabbitMQ和MySQL测试**:

  通过Django应用尝试连接和使用这些服务,确保它们被正确配置且可以互相通信。


步骤7:监控和日志


使用Docker Compose,你可以通过`docker-compose logs`命令查看所有容器的日志,这对于监控应用和调试问题非常有用。



 阅读文章全部内容  
点击查看
文章点评
相关文章
三奇 关注

文章收藏:2230

TA的最新收藏