【Docker】一套使用 Docker 部署 Django 应用的方案中的几个问题求解

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

第一步:服务器安装 Docker

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

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

因为不想推送到 docker 云,直接本地 build,我的项目目录结构如下:
【Docker】一套使用 Docker 部署 Django 应用的方案中的几个问题求解

我有两个 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 运行容器,部署完成

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

回答

-v 共享目录呗

以上是 【Docker】一套使用 Docker 部署 Django 应用的方案中的几个问题求解 的全部内容, 来源链接: utcz.com/a/75085.html

回到顶部