さくらのVPS

さくらのVPSでDocker×Djangoアプリケーションを作成する

さくらのVPSでDjangoアプリケーション作成したいんだけど?

今回はさくらのVPSでDockerを使ってDjangoアプリケーションを作成していきたいと思います。

この記事で分かること

  • さくらのVPSでDockerを使う方法
  • さくらのVPSでDockerを使ってDjangoアプリケーションを作成する方法

この記事ではDockerを使ってやってみるけど、Dockerを使わないでDjangoアプリケーションを公開するっていうことは以下の記事でやったのでDocker使いたくない場合は参考にしてみてください。

さくらのVPS

さくらのVPSでDjangoアプリを公開する【Nginx・uWSGI・MySQL】

2023/1/19  

そんな悩みを解消するために、この記事ではさくらのVPSでサーバーを立ててDjangoアプリケーションを公開してみます。 さくらのVPSでサーバー構築をする さくらのVPSに登録したらさっそくサーバーを ...

さくらのVPSでDockerを使ってDjangoアプリケーションを作成していきましょう。

さくらのVPSでDockerを使ってDjangoアプリを作成する方法

さくらのVPSでDockerを使う際は以下の手順を踏めば使うことができます。

  • VPSサーバーを構築する
  • Dockerをインストールする
  • Djangoアプリケーションを作成する

Dockerはコマンドを使ってインストールしていって、Django自体はrequirements.txtに書いてDockerfileを使ってインストールしていきます。

OSはCentOSでやります

サーバーのOSはCentOSでやります。Ubuntuも選択できるので、Ubuntuでやりたい人はUbuntuでやるといいでしょう。

さくらのVPSでサーバー構築をする

さくらのVPSに登録したらさっそくサーバーを立てましょう。利用クーポンを利用する場合は選択するといいです。

ゾーンは別にどこでもいいかなーっていう感じだけど東京第2にしておきます。

プランは今回は毎月払いの1GBでいきます。メモリやCPUの高いものが欲しいならそれ相応のプランにしましょう。

ストレージは変更手数料0円の50GBにしておきます。

次へボタンを押すとサーバー設定の画面です。サーバー名やサーバー説明は入力しておくと管理画面から見るときに分かりやすいです。

OSは今回CentOSにしておいてバージョンは新しそうなやつを選択。

管理ユーザー名とパスワードはコンソールログインに必要なので、覚えておきましょう。

スタートアップスクリプトと言ってインストール時に実行してくれるスクリプトがあるけど、今回は利用しないとしておきます。

SSHキーはとりあえず登録しないにして進みます。

次へボタンを押すと支払方法を選択することができる。

毎月払いにしてクレジットカードを選択しておきます。

クレジットカード払いにしておくと2週間の無料お試しが利用できるから、もちろん利用するを選んでおきます。

お支払いボタンを押すと完了です。

さくらのVPSで作成したサーバーを確認する

サーバー作成をして少しするとサーバー一覧に作成したサーバーが表示されます。

初期状態は停止しているので、起動してみましょう。

コンソールから確認してみます。

  • ユーザー名・・・centos
  • パスワード・・・サーバー作成時に設定したパスワード

ちゃんとログインできましたね。

サーバーにDockerをインストールする

サーバーにDockerをインストールしていきます。作業はコンソールを使ってもいいんですが、やりづらいのでSSH接続してやるといいですよ。

以下の記事でSSH接続する方法を紹介しています。

さくらのVPS

さくらのVPSでSSH接続する方法を紹介します。

2022/8/8  

そんな疑問を解消するために、この記事ではさくらのVPSで立てたサーバーにSSH接続する方法を書いていきます。 さくらのVPSでサーバーを立ててSSH接続したい方は参考にしてみてください。 さくらのVP ...

DockerのインストールはDocker CEの入手(CentOS向け)を参考にしながらDockerをインストールしていきます。

docker-ceリポをインストール

yumで色々インストールしていきます。

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

docker-ceのインストール

$ sudo yum install docker-ce
# いくつか聞かれるけどyesと答えてインストール

利用可能なバージョンの一覧を確認

$ yum list docker-ce.x86_64  --showduplicates | sort -r

インストール

$ sudo yum install docker-ce.x86_64

起動

$ sudo systemctl start docker

Docker Composeをインストールする

docker-composeも使いたいのでインストールしましょう。。docker-composeのリリースページから最新のバージョンを確認してそれをインストール。

普通にバージョン指定してcurlするとうまく後でコマンドを実行できなかったので、Githubのissueの中から成功したコマンドを実行。

$ sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep '\"tag_name\":' | sed -E 's/.*\"([^\"]+)\".*/\1/')/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

権限を設定します。

$ sudo chmod +x /usr/local/bin/docker-compose

$ docker-compose --version
=> Docker Compose version v2.9.0

docker-composeのバージョンも確認できましたね。

DdjangoアプリケーションのDocker-composeを作成する

Djangoアプリケーションを作っていくんだけど、これはComposeとDjangoを参考にやります。

ポイント

dockerのコマンドはroot権限でないと実行できません。rootユーザーのパスワードを設定してログインする方法は、SSH接続の記事のrootログインで書いています。

適当にディレクトリを作って環境を整っていきます。

$ mkdir my-app
$ cd my-app

Dockerfile

$ vi Dockerfile
#以下を記述

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

requirements.txt

 vi requirements.txt
Django>=1.8,<2.0
psycopg2

docker-compose.yml

version: '3'

services:
  db:
    image: postgres

    environment:
      - "POSTGRES_USER=postgres"
      - "POSTGRES_PASSWORD=password"
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

プロジェクトの作成

Dockerfile、requirements.txt、docker-compose.ymlの作成が終わったらプロジェクトを作成します。

docker-compose run web django-admin.py startproject composeexample .

composeexampleっていうのがカレンとディレクトリに作られるはずです。

settings.pyを編集

settings.pyを編集してサーバーのIPをALLOWED_HOSTSに入力。

ALLOWED_HOSTS = ['160.16.232.210']

データベース情報も書き換えます。

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

さくらのVPSで8000番ポートを許可

さくらのVPSではポートが制限されてるので、今回使う8000番ポートを許可しておきます。

これで後はdocker-compose upしてブラウザにアクセスしてやればいいだけです。

docker-compose upしてブラウザから確認する

docker-compose upしてブラウザにアクセスすると、ちゃんと表示されましたね。

まとめ - さくらのVPSでDockerを使ってDjangoアプリを作成する

DjangoのアプリケーションをDockerを使ってさくらのVPSで作るっていうことをやってみたけど、やっぱりDockerはいいですね。

  • さくらのVPSでサーバーを立てる
  • Dockerをインストールする
  • DockerでDjangoアプリケーションを作る

今回は新しくサーバー内でアプリケーションを作成したけど、ローカルで作成したDockerアプリケーションをアップロードして動かすことも簡単にできそうです。

アップロードする際にはFTPソフトを使ってあげればいいですよ。

  • この記事を書いた人

管理人

各VPSの使い方を紹介します。

-さくらのVPS