素材牛VIP会员
一套使用 Docker 部署 Django 应用的方案中的几个问题求解
 郭***己  分类:Python  人气:1000  回帖:1  发布于6年前 收藏

这几天研究了一下 Docker 文档和参考了一些使用 Docker 部署 Django 项目的文章,综合各种方法后我给出了如下的一套方案,大家看看是否合理。以及其中的几个关键问题该如何解决?

第一步:服务器安装 Docker

这没什么说的,参考 官方安装指南

第二步:将 Dockerfile,docker-compose.yml 和代码仓库拉取到服务器

因为不想推送到 docker 云,直接本地 build,我的项目目录结构如下:

我有两个 Dockerfile,一个是运行 Django 镜像,一个是 Nginx 的镜像,在配置中把代码打包到了 Django 镜像里。

第三步:build 和启动容器

接下使用 docker-compose build 和 up 构建和运行容器,然后在 django 容器中要做的事情有:

  1. 收集静态文件,会收集到 /static 文件夹下

  2. 迁移数据库,会创建一个 db.sqlite3 文件在容器中代码的根目录

这里有两个问题:

  1. 如何让 nginx 容器访问到 django 容器中的 /static 文件夹,这样 nginx 才能处理静态文件请求

  2. 如何把容器中的 db.sqlite3 文件挂到主机下,这样即使容器挂了数据库文件还在

我目前的 docker-compose.yml 文件如下,无法解决如上问题

version: '2'

services:
  django:
    build:
      context: .
      dockerfile: ./compose/django/Dockerfile
    command: /gunicorn.sh
    volumes:
      - .:/app

  nginx:
    build: ./compose/nginx
    depends_on:
      - django
    volumes_from:
      - django
    ports:
      - "0.0.0.0:80:80"

如果上述问题能够解决,那么部署过程就变得简单了,扔给一台新的服务器,只要

  1. 安装 docker

  2. 从 github 仓库拉取代码到服务器

  3. docker-compose build 和 up 运行容器,部署完成

希望有经验的朋友能给一些指点和思路,感激不尽!

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv6 码匠
小***心 站长 6年前#1

-v 共享目录呗

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取