欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 操作系统环境
RUNWORKDIR 指令都是针对容器的,功能是在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就好了

相关标签: Django