在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
./
RUNnpm install
.
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`命令查看所有容器的日志,这对于监控应用和调试问题非常有用。