将django应用程序作为docker容器部署到ubuntu服务器。
dockdj的Python项目详细描述
dockdj
django应用程序部署变得简单
dockdj是一个命令行工具,允许您将任何Django应用程序部署到单个ubuntu服务器。
这个工具的灵感来自于用于部署Meteor.js应用程序的Meteor up工具。
您可以在linux、mac和windows上安装和使用dockdj。它可以部署到运行最新ubuntu的服务器上。
dockdj由Docker compose提供支持,使部署易于管理。
要求
此工具需要python>;3.6
安装
使用以下命令安装dockdj
$ pip install dockdj
用法
假设你有一个有频道(asgi)和芹菜工人的django项目。 芹菜工人需要兔子MQ。 dockdj可以通过以下架构帮助轻松部署此应用程序。 服务器内的每个盒子都是Docker容器。
+-----------------------------------------------------------------------------+
| Ubuntu server 18.04 LTS |
| |
| +----------------+ |
| +--------+ wsgi:80 | |
| +---------------+ | | (gunicorn) | |
| | nginx:80 +-----------------+ +----------------+ |
| | static files +-----------------+ |
| +---------------+ | |
| localhost:8000 | +----------------+ |
| | | asgi:80 | |
| +--------+ (daphne) | |
| +----------------+ |
| |
| |
| |
| |
| |
| |
| +--------------+ +----------------+ |
| | celery +--------------------------+ rabbit mq | |
| | | | | |
| +--------------+ +----------------+ |
| |
| |
| Example deployment of django app using dockdj |
+-----------------------------------------------------------------------------+
如何如图所示部署?
为保存dockdj设置创建django项目目录的同级 将用于部署django应用程序的文件
$ mkdir deploy
parent
- hello_world
| -hello_world
| -wsgi.py
- deploy
$ cd deploy
$ dockdj init
这将创建两个文件dockdj.yaml
和settings.py
parent
- hello_world
| -hello_world
| -wsgi.py
- deploy
- dockdj.yaml
- settings.py
修改dockdj.yaml
文件以输入服务器配置和应用程序详细信息。
初始文件如下所示。
根据需要删除可选/未使用的配置。
---
server:
host: 1.2.3.4
# must be sudo without password
username: root
pem: "/home/user/.ssh/id_rsa"
app:
# Project name used by script to name docker
name: hello_world_stage
settings: 'hello_world/settings.py'
wsgi:
app: 'hello_world.wsgi:application'
asgi: # optional if app uses agsi like channels
app: 'hello_world.asgi:application'
paths: # used by nginx to route to asig
- /ws
- /some_thing_else
celery: # optional for celery django app
app: 'hello_world'
requirements_file: 'requirements.txt'
extra_files: # Optional: config, certs any other files loaded to /app/extra_files/* in docker container
- /path/to/abc.txt
# Django project directory
path: "/path/to/django/code/hello_world"
docker:
image: python:3.7
compose:
services:
celery:
depends_on:
- rabbitmq
rabbitmq:
image: rabbitmq
settings.py
fill包含将附加到django应用程序的settings.py文件中的设置。您可以在此处输入与生产相关的设置或替代开发设置。初始settings.py
文件如下所示。
DEBUG = False
# Add the your servers host name or ip address
ALLOWED_HOSTS = ['1.2.3.4', 'www.example.com']
CELERY_BROKER_URL = 'amqp://guest:guest@rabbitmq:5672//'
适当编辑这两个文件后,运行以下命令安装服务器。如果还没有安装,这将在ubuntu服务器上安装docker。
$ dockdj setup
要部署django应用程序,请运行以下命令。
$ dockdj deploy
这将创建你的django应用的docker图像。
收集静态文件并将其添加到nginx容器中。
运行dockdj.yaml
中指定的所有必需容器。
将nginx容器的80端口绑定到ubuntu主机的8000端口。
可以通过在“dockdj.yaml”中添加以下配置来修改端口绑定
compose:
services:
nginx:
ports:
- 8004:80
停靠站
运行以下命令停止所有容器
$ dockdj stop
Dockdj重新启动
运行以下命令重新启动所有容器
$ dockdj restart
dockdj日志
运行以下命令查看所有容器的日志
$ dockdj logs
Dockdj一次性
您可以使用以下一次性子命令在服务器上运行一次性脚本。
$ dockdj one-off python manage.py migrate