在Docker中使用Django

想做的事情 zuò de

让我们创建一个项目·workshop_tutorialJP
按照这个网站的指引来制作应用程序
不要使用virtualenv,而是使用Docker。

环境

Docker for Windows 版本 18.06.1-ce-win73(19507)

建立项目

创建一个名为Djangogirls的目录,并在其中创建以下3个文件。

djangogirls
├── Dockerfile
├── docker-compose.yml
└── requirements.txt
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
version: '3'

services:
  db:
    image: postgres
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
    - .:/code
    ports:
    - "8000:8000"
    depends_on:
    - db
Django>=1.8,<2.0
psycopg2

2. 创建所需的目录和文件

使用docker-compose运行web django-admin.py startproject mysite . 来启动我的网站项目。

djangogirls
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

进行服务的构建操作,使用docker-compose build命令。

启动Docker容器
运行docker-compose up

キャプチャ.PNG

创建Django模型

使用Docker Compose 运行以下命令来创建一个名为“blog”的应用程序:docker-compose run web python manage.py startapp blog

创建了一个博客目录。

djangogirls
├── blog
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

在`mysite/settings.py`文件的`INSTALLED_APPS`中添加`’blog’`

INSTALLED_APPS = (
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'blog',
)

请将以下内容复制粘贴到3.blog/models.py文件当中。

from django.db import models
from django.utils import timezone

class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

在数据库中创建一个用于模型的表格

1. 将模型添加到数据库中
使用docker-compose运行web python manage.py makemigrations blog

执行用于将数据迁移到数据库的迁移文件
docker-compose运行web python manage.py migrate blog

请登录

将以下内容复制粘贴到blog/admin.py中

from django.contrib import admin
from .models import Post
admin.site.register(Post)

2.superuserを作成する
docker-compose run web python manage.py createsuperuser
ユーザ、メールアドレス、パスワードを聞かれるので入力する。(パスワードは簡単すぎると怒られる)

3. 登录
访问http://127.0.0.1:8000/admin/并进行登录。

4.成功登录了
太好了!

(一旦部署完成后,我会再进行补充)

(2018/10/30附加)在Heroku部署上永远卡住了。

广告
将在 10 秒后关闭
bannerAds