使用PostgreSQL和Docker启动Django

我是正在未来电子技术做实习的箕牧和广。这次我打算写一下使用PostgreSQL和Docker启动Django的步骤。

由于我是一个编程初学者,所以内容可能存在错误。
如果有错误,请指出,我会尽快修改。

创建一个名为docker_django的文件夹。

在桌面上创建一个名为”docker_django”的文件夹。

$ cd desktop
$ mkdir docker_django

在docker_django文件夹中创建三个文件。

$ cd docker_django
$ touch requirements.txt
$ touch Dockerfile
$ touch docker-compose.yml

要求清单

记录要使用的包。这次只是Django。

django==2.2.2

Dockerfile的中文同义表达:

Docker文件

可以使用Dockerfile来描述从Docker Hub获取镜像并创建新镜像的流程。使用Dockerfile可以轻松创建复杂镜像,并在其他主机操作系统上快速准备相同的环境。

# 一番軽いpythonをインストール
FROM python:3.7-slim

# 環境変数の設定
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# ディレクトリー設定
WORKDIR /code

# Dependenciesをインストール
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system

# projectをコピー。「.」の後にspaceあるからね
COPY . /code/ 

docker-compose.yml 请将以下内容用中文进行重述,只需要一种选项:

Docker Compose是用于批量操作容器的功能。通过使用”docker run”命令逐个启动和构建容器很麻烦,因为需要考虑启动顺序,使用不同的选项。

Dockerfile只能为每个文件创建一个映像,然而Docker Compose可以同时从Docker Hub获取映像并同时生成和运行多个容器,全部写在一个文件中。

version: '3.7' #Docker Composeのバージョン

services:
  web: #コンテナに名前をつける
    build: .  #Dockerfileがあるディレクトリへのパス
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code  #ホストPCのカレントディレクトリとコンテナ内のcodeディレクトリを同期させる
    ports:
      - 8000:8000
    depends_on:
      - db
  db:
    image: postgres:11  #postgresを定義

启动容器,创建Django项目。

启动Docker容器,创建一个名为”site”的项目。

$ docker-compose run --rm web django-admin startproject site .

启动应用程序和迁移命令也是一样的。

$ docker-compose run --rm web django-admin startapp app
$ docker-compose run --rm web python3 manage.py migrate

在运行命令时加上”–rm”选项,这样命令执行后容器会立即被删除。如果忘记加上”–rm”选项,每次执行命令都会创建一个新的容器并累积下来。

编辑settings.py

我想将POSTGRESQL设置为数据库,所以需要编辑settings.py文件。

...

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': 5432
    }
}
...

最后,使用”docker-compose up”命令启动本地服务器。

$ docker-compose up
...
web_1  | Django version 2.2.2, using settings 'blog.settings'
web_1  | Starting development server at http://0.0.0.0:8000/
web_1  | Quit the server with CONTROL-C.

当访问http://127.0.0.1:8000/时,会显示Django的页面。

广告
将在 10 秒后关闭
bannerAds