前后端入门-vue 项目 docker 打包部署-解决跨域请求

1 环境

# 软件版本

npm 6.14.15

centos 7.6

docker 20.10.8

docker-compose v2.6.1

node 14.17.6

vue 2.9.6

nginx 1.23.4

2 项目结构介绍

路径没有硬要求,后续打包时填写目录正确即可。

project
├── docker_env			# dockerfile配置目录
│   ├── nginx
│   │   └── my.conf		# nginx配置目录
│   └── web
│       └── DockerfileBuild	# web dockerfile build配置文件

└── hippo_web
    ├── build
    ├── config
    ├── dist
    ├── index.html
    ├── node_modules
    ├── package.json
    ├── package-lock.json
    ├── README.md
    ├── src
    ├── st
    └── static

3 前期准备

3.1 vue源码部分调整-为实现跨域请求

# 主要修改vue axios请求后端url部分
# 所有请求后端的url前添加/api 字符串,方便同一个主机不同端口实现访问后端接口
# 如:
this.$axios.post(`/api/users/login/`,{}

3.2 vue项目打包

# 进入项目hippo目录
cd project/hippo_web
# npm打包vue项目
npm run build

# project/hippo_web下生成dist目录

3.3 编写nginx配置文件

# my.conf
server {
    listen       8080;
    server_name localhost;
    client_max_body_size 100M;
    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        root /usr/share/nginx/html;
        index  index.html index.php index.htm;
        try_files $uri $uri/ /index.html; # 实现网页刷新时跳转原网页 一定要加
    }

    location /api/ { 	# 后端api部分跳转
        proxy_set_header Host $http_host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        rewrite ^/api/(.*)$ /$1 break;  #重写
        proxy_pass http://192.168.192.10:8000/; # 设置代理服务器的协议和地址 本地宿主机192.168.192.10
   }
}

4 Dockerfile编写

# 拉取基础镜像
FROM nginx:alpine

# 拷贝nginx配置文件
COPY ./docker_env/nginx/my.conf /etc/nginx/conf.d/my.conf

# 拷贝打包好的项目
COPY ./hippo_web/dist /usr/share/nginx/html

5 打docker基础Build包

# docker build
# 进项目目录
cd project/
docker build -f ./docker_env/web/DockerfileBuild -t vue_web_img:v1 .


# docker build 参数
docker build -f Dockerfile -t ImageName:TagName dir

# 选项
-f Dockerfile配置文件
Dockerfile  镜像配置的Dockerfile 存放位置
-t 给镜像加一个Tag
ImageName 给镜像起的名称
TagName 给镜像的Tag名
Dir Dockerfile所在目录

# 查看打包生成的镜像
docker images
REPOSITORY          TAG       IMAGE ID       CREATED             SIZE
vue_web_img                     v1               d6f6f145ebc7   22 minutes ago   57.4MB

6 运行docker容器及验证服务

# 启动容器,服务自启动,打包时以写入
docker run -it -d -p 8080:8080 --name myweb11 vue_web_img:v1

# 浏览器访问
http://192.168.192.10:8080

# 查看容器运行状态
docker ps

CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                                               NAMES
c2bb6d7ed428   vue_web_img:v1             "/docker-entrypoint.…"   26 minutes ago   Up 26 minutes   80/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   myweb
f3a6d8209737   django_docker_img_new:v1   "/backend/docker_sta…"   26 hours ago     Up 20 minutes   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp           mysite

 

<think>好的,我现在需要帮助用户了解如何部署django-vue3-admin项目。首先,我得确认这个项目的构成。django-vue3-admin应该是一个前后端分离的管理系统,后端使用Django,前端使用Vue3。用户可能对部署流程不太熟悉,需要分步骤指导。 用户可能已经完成了开发,现在需要部署到生产环境。常见的部署方式包括使用Nginx作为反向代理,处理静态文件,同时可能需要配置Gunicorn或uWSGI来运行Django后端。前端部分可能需要构建静态文件并配置Nginx来托管。 首先,我应该分步骤来讲解部署流程,包括后端部署前端部署以及Nginx配置。需要注意区分开发环境和生产环境的配置差异,比如DEBUG设置、数据库配置、静态文件收集等。 后端部署方面,需要确保Django的生产配置正确,比如设置ALLOWED_HOSTS、配置数据库(可能从SQLite切换到PostgreSQL或MySQL)、收集静态文件,以及使用Gunicorn作为WSGI服务器。可能还需要配置Supervisor来管理进程,确保服务在崩溃后自动重启。 前端部署部分,Vue3项目通常需要运行npm run build生成静态文件,然后将这些文件放到Nginx指定的目录中。需要检查Vue的API请求地址是否正确指向后端服务,可能需要配置环境变量或修改配置文件。 Nginx的配置需要同时处理前端路由和后端API请求的反向代理。需要注意静态文件的路径配置,避免404错误。SSL证书的配置也是生产环境需要考虑的,可以使用Let's Encrypt的Certbot来获取免费证书。 此外,可能需要提到部署前的准备工作,比如安装依赖(Python的依赖包、Node.js环境等)、环境变量的管理(使用.env文件或直接设置环境变量)、以及可能的防火墙设置(开放80和443端口)。 用户可能遇到的问题包括静态文件权限问题、配置、数据库连接失败、服务无法自动启动等,需要在步骤中提醒常见错误和解决方法。例如,检查Nginx的日志文件,确保Django的ALLOWED_HOSTS包含正确的名或IP,确保Gunicorn正确绑定到端口等。 总结下来,应该将部署过程分解为清晰的步骤,每个步骤给出具体的命令和配置示例,帮助用户逐步完成部署。同时,提醒用户注意生产环境的安全设置,避免敏感信息泄露。</think>以下是使用中文介绍的**django-vue3-admin**项目部署流程(分步骤说明): --- ### 一、项目准备阶段 1. **克隆项目** ```bash git clone https://github.com/liqianglog/django-vue3-admin.git cd django-vue3-admin ``` 2. **安装依赖** - **后端依赖**(Python环境) ```bash pip install -r requirements.txt ``` - **前端依赖**(Node.js环境) ```bash cd frontend npm install ``` --- ### 二、后端部署(Django) 1. **配置生产环境** - 修改 `settings_prod.py`: ```python DEBUG = False ALLOWED_HOSTS = ['your-domain.com', '服务器IP'] # 配置数据库(示例使用MySQL) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_db', 'USER': 'root', 'PASSWORD': 'your_password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 2. **收集静态文件** ```bash python manage.py collectstatic ``` 3. **使用Gunicorn启动服务** ```bash gunicorn django_vue3_admin.wsgi:application -w 4 -b 0.0.0.0:8000 ``` 4. **配置Supervisor(可选)** ```ini [program:django-vue3-admin] command=/path/to/gunicorn --bind 0.0.0.0:8000 django_vue3_admin.wsgi:application directory=/path/to/project autostart=true autorestart=true ``` --- ### 三、前端部署Vue3) 1. **构建生产包** ```bash cd frontend npm run build ``` - 生成 `dist` 目录 2. **配置Nginx托管** ```nginx server { listen 80; server_name your-domain.com; location / { root /path/to/django-vue3-admin/frontend/dist; index index.html; try_files $uri $uri/ /index.html; } # 代理后端API location /api/ { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` --- ### 四、HTTPS配置(可选) 1. **使用Certbot申请证书** ```bash sudo certbot --nginx -d your-domain.com ``` 2. **自动续期证书** ```bash certbot renew --dry-run ``` --- ### 五、启动服务 1. **重启Nginx** ```bash sudo systemctl restart nginx ``` 2. **访问验证** - 浏览器访问:`https://your-domain.com` - 默认账号:`admin/admin123` --- ### 常见问题 1. **问题** 确保Django配置了CORS: ```python CORS_ALLOW_ALL_ORIGINS = False CORS_ALLOWED_ORIGINS = ["https://your-domain.com"] ``` 2. **静态文件404** 检查Nginx配置中的 `root` 路径是否正确 3. **数据库连接失败** 检查MySQL用户权限及防火墙设置 --- > **提示**:建议使用Docker容器部署以简化流程,可参考项目的 `docker-compose.yml`(如有提供)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值