GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerガイド:PythonDjangoアプリケーションのDocker化

Dockerは、開発者とシステム管理者が軽量のコンテナーとしてどこにいてもアプリケーションを構築、パッケージ化、実行するためのオープンプラットフォームを提供するオープンソースプロジェクトです。 Dockerは、ソフトウェアコンテナ内のアプリケーションのデプロイを自動化します。

Djangoは、MVC(Model-View-Controller)アーキテクチャーに従うPythonで記述されたWebアプリケーションフレームワークです。これは無料で利用でき、オープンソースライセンスの下でリリースされます。高速で、開発者がアプリケーションをできるだけ早くオンラインにするのに役立つように設計されています。

このチュートリアルでは、Ubuntu16.04で既存のDjangoアプリケーションプロジェクトのDockerイメージを作成する方法を段階的に説明します。 Python Djangoアプリケーションのドッキングについて学習し、docker-composeスクリプトを使用してアプリケーションをコンテナーとしてdocker環境にデプロイします。

Python Djangoアプリケーションをデプロイするには、追加のDockerイメージが必要です。ウェブサーバー用のnginxdockerイメージと、データベース用のPostgreSQLイメージが必要です。

何をしますか?

  1. Docker-ceをインストールします
  2. Docker-composeをインストールします
  3. プロジェクト環境の構成
  4. ビルドして実行
  5. テスト
ステップ1-Docker-ceをインストールします

このチュートリアルでは、dockerリポジトリからdocker-ceコミュニティエディションをインストールします。作成ファイルバージョン3をサポートするdocker-ceコミュニティエディションとdocker-composeをインストールします。

docker-ceをインストールする前に、aptコマンドを使用して必要なdocker依存関係をインストールしてください。

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

次に、以下のコマンドを実行して、Dockerキーとリポジトリを追加します。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

リポジトリを更新し、docker-ceをインストールします。

sudo apt update
sudo apt install -y docker-ce

インストールが完了したら、Dockerサービスを開始し、システムの起動時に毎回起動できるようにします。

systemctl start docker
systemctl enable docker

次に、「omar」という名前の新しいユーザーを追加して、dockerグループに追加します。

useradd -m -s /bin/bash omar
usermod -a -G docker omar

omarユーザーとしてログインし、以下に示すようにdockerコマンドを実行します。

su - omar
docker run hello-world

Dockerからhello-worldメッセージを受け取るようにしてください。

Docker-ceのインストールが完了しました。

ステップ2-Docker-composeをインストールします

このチュートリアルでは、composeファイルバージョン3の最新のdocker-composeサポートを使用します。docker-composeを手動でインストールします。

最新バージョンのdocker-composeを使用してcurlコマンドを「/usr/ local / bin」ディレクトリにダウンロードし、chmodを使用して実行可能にします。

以下のコマンドを実行します。

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

次に、docker-composeバージョンを確認します。

docker-compose version

また、最新バージョンのdocker-compose1.21を入手してください。

docker-composeファイルバージョン3をサポートする最新バージョンがインストールされています。

ステップ3-プロジェクト環境を構成する

このステップでは、PythonDjangoプロジェクト環境を構成します。新しいディレクトリ「guide01」を作成し、Dockerfile、Djangoプロジェクト、nginx構成ファイルなどのプロジェクトファイルのメインディレクトリにします。

'omar'ユーザーにログインします。

su - omar

新しいディレクトリ「guide01」を作成し、そのディレクトリに移動します。

mkdir -p guide01
cd guide01/

'guide01'ディレクトリ内に、新しいディレクトリ'project'と'config'を作成します。

mkdir project/ config/

注:

  • ディレクトリ'プロジェクト':すべてのPythonDjangoプロジェクトファイルがそのディレクトリに配置されます。
  • Directory'config':nginx構成ファイル、pythonpip要件ファイルなどを含むプロジェクト構成ファイルのディレクトリ。
新しいrequirements.txtファイルを作成する

次に、vimコマンドを使用して「config」ディレクトリ内に新しいファイル「requirements.txt」を作成します。

vim config/requirements.txt

以下の設定を貼り付けてください。

Django==2.0.4  
gunicorn==19.7.0 
psycopg2==2.7.4

保存して終了します。

Nginx仮想ホストファイルdjango.confを作成します

configディレクトリの下に、「nginx」構成ディレクトリを作成し、仮想ホスト構成ファイルdjango.confを追加します。

mkdir -p config/nginx/
vim config/nginx/django.conf

次の構成をそこに貼り付けます。

upstream web {
  ip_hash;
  server web:8000;
}

# portal
server {
  location / {
        proxy_pass http://web/;
    }
  listen 8000;
  server_name localhost;

  location /static {   
    autoindex on;   
    alias /src/static/;   
  }
}

保存して終了します。

Dockerfileを作成する

'guide01'ディレクトリ内に新しい'Dockerfile'を作成します。

以下のコマンドを実行します。

vim Dockerfile

次に、Dockerfileスクリプトを下に貼り付けます。

FROM python:3.5-alpine
ENV PYTHONUNBUFFERED 1 

RUN apk update && \
    apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add postgresql-dev bash

RUN mkdir /config 
ADD /config/requirements.txt /config/ 
RUN pip install -r /config/requirements.txt
RUN mkdir /src
WORKDIR /src

保存して終了します。

注:

Linuxの最小サイズであるAlpineLinuxに基づいて、DjangoプロジェクトのDockerイメージをビルドしたいと考えています。 Djangoプロジェクトは、Python3.5がインストールされたAlpineLinuxを実行し、PostgreSQLデータベースをサポートするためのpostgresql-devパッケージを追加します。次に、python pipコマンドを使用して、「requirements.txt」ファイルにリストされているすべてのpythonパッケージをインストールし、プロジェクト用に新しい「/src」を作成します。

Docker-composeスクリプトを作成

以下のvimコマンドを使用して、「guide01」ディレクトリの下に「docker-compose.yml」ファイルを作成します。

vim docker-compose.yml

次の構成をそこに貼り付けます。

version: '3'
services:
  db:
    image: postgres:10.3-alpine
    container_name: postgres01
  nginx:
    image: nginx:1.13-alpine
    container_name: nginx01
    ports:
      - "8000:8000"
    volumes:
      - ./project:/src
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: django01
    command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn hello_django.wsgi -b 0.0.0.0:8000"
    depends_on:
      - db
    volumes:
      - ./project:/src
    expose:
      - "8000"
    restart: always

保存して終了します。

注:

このdocker-composeファイルスクリプトを使用して、3つのサービスを作成します。 PostgreSQL alpineLinuxを使用して「db」という名前のデータベースサービスを作成し、Nginx alpine Linuxを使用して「nginx」サービスを再度作成し、Dockerfileから生成されたカスタムdockerイメージを使用してpythonDjangoコンテナを作成します。

Djangoプロジェクトを構成する

Djangoプロジェクトファイルを「project」ディレクトリにコピーします。

cd ~/django
cp -r * ~/guide01/project/

'project'ディレクトリに移動し、アプリケーション設定'settings.py'を編集します。

cd ~/guide01/project/
vim hello_django/settings.py

注:

'hello_django'アプリと呼ばれる単純なDjangoアプリケーションをデプロイします。

「ALLOW_HOSTS」行に、サービス名「web」を追加します。

ALLOW_HOSTS = ['web']

次に、データベース設定を変更します。デフォルトのユーザーとパスワードで「db」という名前のサービスとして実行されるPostgreSQLデータベースを使用します。

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

また、「STATIC_ROOT」構成ディレクトリの場合は、この行をファイルの行の最後に追加します。

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

保存して終了します。

これで、Dockerコンテナの下でDjangoプロジェクトをビルドして実行する準備が整いました。

ステップ4-Dockerイメージをビルドして実行します

このステップでは、「guide01」ディレクトリの構成を使用して、DjangoプロジェクトのDockerイメージをビルドします。

'guide01'ディレクトリに移動します。

cd ~/guide01/

次に、docker-composeコマンドを使用してdockerイメージをビルドします。

docker-compose build

docker-composeスクリプト内ですべてのサービスを開始します。

docker-compose up -d

DockerがPythonイメージをビルドし、nginxおよびpostgresqldockerイメージをダウンロードするまで数分待ちます。

完了したら、次のコマンドを使用して、実行中のコンテナーを確認し、システム上のDockerイメージを一覧表示します。

docker-compose ps
docker-compose images

これで、以下に示すように、3つのコンテナーが実行され、システム上のDockerイメージのリストが表示されます。

Python DjangoアプリケーションがDockerコンテナ内で実行され、サービスのDockerイメージが作成されました。

ステップ5-テスト

ウェブブラウザを開き、ポート8000​​でサーバーアドレスを入力します。私のものは次のとおりです。 http:// ovh01:8000 /

これで、デフォルトのDjangoホームページが表示されます。

次に、URLに「/admin」パスを追加して管理ページをテストします。

http:// ovh01:8000 / admin /

そして、Django管理者ログインページが表示されます。

DockerizingPythonDjangoアプリケーションは正常に完了しました。


Docker
  1. DockerでのPostgreSQLの実行、クイックで実用的なガイド

  2. DockerコンテナでNginxを実行する方法:ステップバイステップガイド

  3. Ubuntu20.04にPython3.11をインストールします-ステップバイステップガイド?

  1. Dockerを使用する時期と理由

  2. Dockerロギングの完全な初心者向けガイド

  3. DockerComposeを使用するためのクイックガイド

  1. Ubuntu18.04にDjangoをインストールする方法

  2. CentOS7にDjangoをインストールする方法

  3. Dockerガイド:Ubuntu18.04でのNodejsExpressアプリケーションのDocker化