Blog

[2]Python,Django,Dockerで作るWEBアプリケーション

  • Update2016-08-15
  • Category
    • Backend
  • Other--
[2]Python,Django,Dockerで作るWEBアプリケーションのサムネイル画像

前回に引き続き、今回は作成したアプリケーションをDockerで動かしたいと思います。

今回利用するのはDockerHub上の公式イメージを利用します。
https://hub.docker.com/r/library/django/

なお、前回から引き続きアプリケーションを起動している場合は一旦Ctr + Cで閉じてください。また、仮想環境上にいる場合はdeactivateしてください。

Dockerfileを作る

このDockerfileは同階層にあるmanage.pyを参照し起動するため、作成したmybookディレクトリにDockerfileを作り、requirements.txtにpipで入れたいパッケージを入れます。requirements.txtは箇条書きで良いそうです。

mybook/Dockerfile

FROM django:onbuild

mybook/requirements.txt

django-bootstrap-form

では、起動してみます。ディレクトリやDockerのコンテナは自分の環境に合わせてください。

deactivate #仮想環境上なら
cd /Users/kote2/Desktop/kote2/test/20160815_2/mybook 
docker build -t kote2django . #初回は少し時間かかる
docker images #作成されたイメージの確認
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
kote2django         latest              8b67acfb2bf4        About a minute ago   763.3 MB

起動してみます。-pはポート指定です。左がホスト側で右がコンテナ側です。-dはバックグラウンドで起動します。

docker run --name kote2djancon -p 80:8000 -d kote2django
83a8feb4d1d68a18a7b4f6b937bcbd5824ef206f1d30a27707ff732ae2e91918

http://localhost/admin/にアクセスします。以下のようにlocalhostで管理画面が出れば成功です。
ログイン___Django_サイト管理

同様にhttp://localhost/cms/book/にアクセスしてみます。きちんと動いていたら成功です。なお、コンテナ上に入ってdjangoの動きを確認したい場合はexecコマンドを使います。

docker ps #起動中のコンテナIDを確認
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
83a8feb4d1d6        kote2django         "python manage.py run"   12 minutes ago      Up 12 minutes       0.0.0.0:80->8000/tcp   kote2djancon
docker exec -it 83a bash #execでコンテナIDを指定してイン
root@83a8feb4d1d6:/usr/src/app# 

アプリケーションを公開する

さて、アプリケーションの公開ですが、今回Gitでbitbucketを使いました。なのでGit pushで公開します。もちろんSFTPを使い手動で公開もできますが、bitbucket上で公開を自動化させるツール、deploybotを使います。ちなみに有料になります。

DeployBot_–_Deploy_your_code_anywhere

なお、deploybotを使ったやり方は以前記事に書いたのでこちらを参考にしてください。

bitbucketとdeploybotを使ったWEBアプリケーションの公開
http://kote2.tokyo/blog/2016/08/03/bitbucket-deploybot/

今回はさくらVPS上を本番サーバーと仮定して解説します。こちらも前に記事を書いたのでこちらをご参考ください。

DockerでさくらVPS上にLAMP環境を1から作る
http://kote2.tokyo/blog/2016/08/01/docker_sakura_vps_lamp/

上の記事で認証鍵を使ったSSH接続ができ、dockerをインストール状態まで行った状態で話を進めていきます。ただし、ローカルでやった方法と基本的には同じです。アプリケーションをdeploybotまたは手動でアップしてdockerコンテナを起動させるだけです。

ssh -i id_rsa kote2@***.***.***.*** -p 10022 #SSHログイン
mkdir app
cd app
pwd
/home/kote2/app #今回はここにアプリを入れます

deploybotに行く前に、[1]の記事で作成したアプリをSourcetreeでpushします。まずBitbucketに行ってリポジトリを作成します。
スクリーンショット_2016_08_15_18_00

SourceTreeの設定でリモートリポジトリの登録をします。
リポジトリの作成_—_Bitbucket

Pushします。
MyfirstDjangoApp__Git_

deploybotに行きます。新規登録作業などは省きます。

リポジトリから新規作成します。
kote2__Repositories

同期するリポジトリが一覧に作成されます。
kote2__Repositories

歯車アイコンの設定を開いて表示されているPublick keyを本番サーバー側に登録してやります。

次に環境設定をします。
djangoapp__Deployments

SFTPを選んでどこにアップロードさせるか等を設定します。
djangoapp__Deployments

準備ができたのでデプロイボタンを押します。
djangoapp__kote2djangoapp_environment

デプロイされたらDocker上でコンテナを起動します。とは言ってもローカル上でコンテナを立ち上げた時と同じやり方です。まず本番サーバーにSSHで接続します。

ssh -i id_rsa kote2@***.***.***.*** -p 10022 #SSHログイン
cd app
cd mybook
docker build -t kote2django . #イメージ作成
docker images #作成されたイメージの確認
docker run --name kote2djancon -p 80:8000 -d kote2django #コンテナ起動

これでうまく行ってれば公開となります。以降、Pushは本番公開になるので気をつけてね。

書籍の一覧

いじょ!

[1]Python,Django,Dockerで作るWEBアプリケーション
[2]Python,Django,Dockerで作るWEBアプリケーション