建材公司网站建设案例,商城网站 前置审批,做网站与考研,中国万网ceoDocker-Compose一键部署项目 目录 Docker-Compose一键部署项目介绍部署Django项目项目目录结构 docker-compose.ymlnginx的default.conf文件后端Dockerfile文件mysql.env一键部署DNS域名解析引起的跨域问题 介绍
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的…Docker-Compose一键部署项目 目录 Docker-Compose一键部署项目介绍部署Django项目项目目录结构 docker-compose.ymlnginx的default.conf文件后端Dockerfile文件mysql.env一键部署DNS域名解析引起的跨域问题 介绍
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它通过使用 YAML 文件来配置应用程序的服务从而简化了容器的管理和部署
部署Django项目
项目目录结构 -Terminal_API # 项目根目录 -dist # 前端Vue整合 -docker_compose_files # 容器的配置文件 -mysql -nginx -default.conf # nginx的默认配置文件 -terminal # 项目 -Dockerfile # 后端Dockerfile文件 -.gitignore # git的忽略文件 -docker-compose.yml # docker-compose的配置文件 -mysql.env # mysql的配置文件 docker-compose.yml
version: 3services:nginx:image: nginx # 指定容器container_name: terminal_nginx # 为将要生成的容器取名ports:# 绑定端口左边宿主机右边容器- 8080:8080- 8000:8000restart: always # 容器的重启策略确保容器在停止或崩溃时总是重启volumes:# 挂载类似-v- ./dist:/var/www/html- ./docker_compose_files/nginx:/etc/nginx/conf.ddepends_on:- djangonetworks:- webdjango:build:context: ./terminal # 指定Dockerfile所在目录dockerfile: Dockerfilecontainer_name: terminal_django
# command: python manage_pro.py makemigrations python manage_pro.py migrate uwsgi ./luffy.inirestart: alwaysports:- 8001:8001volumes:- ./terminal:/appenvironment:- TZAsia/Shanghaidepends_on:- mysqlnetworks:- webmysql:image: mysql:latestcontainer_name: terminal_mysqlrestart: alwaysports:- 3308:3306env_file:- ./mysql.envvolumes:- ./docker_compose_files/mysql/data:/var/lib/mysql- ./docker_compose_files/mysql/logs:/var/log/mysql- ./docker_compose_files/mysql/conf:/etc/mysql/conf.dnetworks:- webnetworks:web:nginx的default.conf文件
server {listen 8080;server_name 127.0.0.1;charset utf-8;location / {root /var/www/html;index index.html;try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题}
}server {listen 8000;server_name 127.0.0.1;add_header Access-Control-Allow-Origin *;location / {if ($request_method OPTIONS) {add_header Access-Control-Allow-Methods GET, POST, OPTIONS;add_header Access-Control-Allow-Headers DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range;add_header Access-Control-Max-Age 1728000;return 204;}proxy_pass http://terminal_django:8001;# 其他proxy_set_header指令...}
}后端Dockerfile文件
# 使用官方Python镜像作为基础镜像
FROM python:3.10# 设置工作目录
WORKDIR /app## 将当前目录下的代码复制到容器的/app目录下
COPY .. /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 暴露端口
EXPOSE 8001# 运行Django应用
CMD [python, manage.py, runserver, 0.0.0.0:8001]mysql.env
MYSQL_ROOT_PASSWORD7997
MYSQL_DATABASEterminal
TZAsia/Shanghai一般来说部署的数据库HOST要换成容器名也可以是服务名
DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: terminal,HOST: mysql,PORT: 3306,USER: root,PASSWORD: 7997,}
}一键部署
必须在docker-compose.yml所在目录下运行docker-compose up指令 如果上线的是服务器需要去把安全组打开
DNS域名解析引起的跨域问题
域名解析本身不会引起跨域问题但是如果前端axios访问的地址写成你网站的域名那么就可能会引起跨域问题这取决于网站后端的策略如果要访问不同的容器端口那么前端axios最好全部换成服务器IP
// 推荐
const BASE_URL http://111.231.28.207:8001/// 不推荐
const BASE_URL http://www.abv.com:8001/
址写成你网站的域名那么就可能会引起跨域问题这取决于网站后端的策略如果要访问不同的容器端口那么前端axios最好全部换成服务器IPjs
// 推荐
const BASE_URL http://111.231.28.207:8001/// 不推荐
const BASE_URL http://www.abv.com:8001/