docker部署Django项目(前后端分离项目)
程序员文章站
2022-06-13 16:34:50
...
第一步
切换yum源: https://blog.csdn.net/wangshuminjava/article/details/84380308
第二步
1. 安装docker
- https://www.runoob.com/docker/centos-docker-install.html
- 修改docker镜像源:https://blog.csdn.net/l848168/article/details/83378298
2. 安装docker-compose
- http://get.daocloud.io/
第三步
1. 把项目放到服务器上
比如: 在 home 目录下建一个 wwwroot文件夹,把项目放在里面
2. 在项目根目录下建 Dockerfile 文件
# 从仓库拉取 带有 python 3.7 的 Linux 环境
FROM python:3.7
# 设置 python 环境变量
ENV PYTHONUNBUFFERED 1
# 添加这两行
RUN apt-get update
RUN apt-get install python3-dev default-libmysqlclient-dev -y
# 创建 code 文件夹并将其设置为工作目录
RUN mkdir /code
WORKDIR /code
# 更新 pip
RUN pip install pip -U -i https://mirrors.aliyun.com/pypi/simple/
# 将 requirements.txt 复制到容器的 code 目录
ADD requirements.txt /code/
# 安装库 并使用阿里源安装
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 将当前目录复制到容器的 code 目录
ADD . /code/
FROM python:3.7 |
指令从仓库拉取一个包含 python 3.7 的 Linux 操作系统环境 |
---|---|
RUN 和 WORKDIR
|
指令都是针对容器的,功能是在docker容器里创建目录、并将其设置为工作目录;注意宿主机是没有这个目录的 |
ADD requirements.txt /code/ |
意思是将宿主机当前目录(即 Dockerfile 所在目录)的 requirements.txt 文件复制到容器的 /code 目录中 |
ADD . /code/ |
把当前目录所有内容复制到容器 /code/ 目录,注意中间那个点
|
3.在项目根目录下建 docker-compose.yml 文件
version: "3"
services:
app:
restart: always
build: . # '点'代表当前目录
command: "python3 manage.py runserver 0.0.0.0:8000"
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
db:
image: mysql:5.7
volumes:
- "./mysql:/var/lib/mysql"
ports:
- "3306:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=mypassword
- MYSQL_DATABASE=django_app
version |
代表 docker-compose.yml 的版本,目前最新版为 3 |
---|---|
restart |
除正常工作外,容器会在任何时候重启,比如遭遇 bug、进程崩溃、docker 重启等情况 |
build |
指定一个包含 Dockerfile 的路径,并通过此 Dockerfile 来构建容器镜像。注意那个 “.” ,代表当前目录 |
command |
容器运行时需要执行的命令。这里就是我们很熟悉的运行开发服务器了 |
volumes |
卷,这是个很重要的概念。宿主机和容器目录的映射。 |
ports |
定义了宿主机和容器的端口映射;宿主机端口映射到本容器的端口 |
depends_on |
意思是此容器需要等待 db 容器启动完毕才能够启动 |
image |
从仓库拉取 MySQL 5.7镜像。可以自己定版本 |
environment |
定义容器的环境变量,设置了 MySQL 的 root 用户的密码、数据库的名称。 |
4.修改Django的setting.py中数据库的配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_app',
'USER': 'root',
'PASSWORD': 'mypassword',
'HOST': 'db', #注意 HOST 填写的是docker容器的名称,即 db
'PORT': '3306',
'OPTIONS': {'charset': 'utf8'},
}
}
注意:请先确认没有其他程序占用了 3306 端口,比如宿主机安装的 MySQL。
5.运行docker
docker-compose up
第四步安装nginx (注意:前后端分离项目)
1.安装nginx
yum install nginx
2.进入nginx的目录
cd /etc/nginx/conf.d
3.编辑你的前端项目配置
vi your_name.conf
your_name.conf 是自己随便取的名字,只要是xxx.conf就行
server {
listen 80;
server_name localhost; #有域名放域名,没域名就是 localhost
location / {
root /wwwroot/h5; #这里放前端项目目录地址
index index.html;
}
}
保存退出编辑;
执行: nginx -s reload 重启nginx就好了
推荐阅读
-
docker-compose部署django+nginx+mysql项目
-
CentOS上Docker部署Django项目记录
-
从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十三 || DTOs 对象映射使用,项目部署Windows+Linux完整版,
-
Django+Vue.js搭建前后端分离项目的示例
-
Django+vue在腾讯云上搭建前后端分离项目
-
Docker 部署Django项目的方法示例
-
从壹开始前后端分离 41 || Nginx+Github+PM2 快速部署项目(一)
-
记一次前后端分离项目的部署过程
-
ubuntu下java前后端分离项目部署
-
部署vue+Springboot前后端分离项目的步骤实现