2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker上で移植可能なアプリケーション開発

2
Posted at

Docker上で開発環境を構築することで、
複数のマシンから環境を意識することなく
アプリケーション開発 + 移植が行えます。

今回は
Dockerコンテナ上で
Python + Django の開発環境を構築しました。

その環境でPythonサーバーを起動し、
ホストPCのブラウザからアクセスする方法を説明します。

今回作成したDocke Image
https://hub.docker.com/r/rimacdocker/django

実施したこと

以下の手順でDocker上でDjango開発用Webサーバーを起動しました。

  1. コンテナ上でDjango開発環境の構築
  2. Djangoでアプリケーション作成 + サーバー起動

ホスト側の環境

MacOS 10.13.1
Docker 18.09.2

1. コンテナ上でDjango開発環境の構築

まず、Dockerコンテナ上でDjango開発環境を構築します。
詳細な手順は以下の通り。

1-1. OSイメージの取得、コンテナの起動
1-2. コンテナ上で必要なパッケージ、ライブラリのインストール

1-1. OSイメージの取得、コンテナの起動

今回はUbuntuの最新イメージを取得して、コンテナを起動します。

ホスト側8000番ポート:コンテナ側8000番ポート
をポートフォワーディングして起動します。

# Ubuntuイメージの取得、コンテナの起動
docker run -p 8000:8000 -it ubuntu

注意点: ポートフォワーディング

コンテナで起動したサーバーに、ホスト側からアクセスできるように
ホスト側の特定のポート番号と、コンテナ側の特定のポート番号を結んでおく必要があります。

1-2. 必要なパッケージ、ライブラリのインストール

Ubuntuイメージを基に、起動したコンテナ上で必要なパッケージ等をインストールします。
Djnagoでの開発に必要なパッケージ、ライブラリは以下の通り。

インストールしたパッケージ

  • Ubunutuパッケージ

    • vim
    • python3
    • python3-pip
  • Pyhtonライブラリ

  • django

コンテナ上で実行したコマンド

# パッケージマネージャの最新化
apt update
apt upgrade

# Python, Pipのインストール
apt install python3
apt install python3-pip --fix-missing

# Vimのインストール
apt install vim

# Djangoのインストール
pip3 install django

2. Djangoでアプリケーション作成 + サーバー起動

手順1でDjangoが使えるようになったので、
Djangoアプリケーションを作成して、開発用Webサーバーを起動します。
詳細な手順は以下の通り。

2-1. Dajngoアプリケーションの作成
2-2. 開発用Webサーバーの起動

2-1. Dajngoアプリケーションの作成

Djangoコマンドでアプリケーション作成します。

# 任意の作業用フォルダを作成 + 移動
mkdir django
cd django

# アプリケーションの作成
django-admin.py startproject dj_sample

2-2. 開発用Webサーバーの起動

同じくDjangoコマンドで
データベースマイグレーション + Webサーバーの起動を行います。

# 作成されるアプリケーションフォルダに移動
cd dj_sample/

# データベースマイグレーションの実行
python3 manage.py migrate 

# 開発用Webサーバーの起動
python3 manage.py runserver 0:8000

コマンドを実行するとサーバーが起動するので
ブラウザでhttp://127.0.0.1:8000にアクセスすると
Djangoのサンプルページが表示されます。

補足: データベースマイグレーション

Djangoで使うデータベースの定義を自動的に作成、管理する機能です。
この機能により、
直接SQL文を書かずに、データベースに変更を加えることが出来ます。

python3 manage.py migrate
上記のコマンドで、
Django内のデータベースの定義に従って、データベースに対するSQL文を発行します。

補足: runserver 0:8000

通常、Djangoでローカルマシン上に起動したサーバーを
外から見えるようにするには
IPアドレスを任意のポートに紐付ける必要があります。

今回はコンテナで立てたサーバーに
ローカルマシンからアクセス出来るように
全てのIP(0.0.0.0)を8000番ポートに紐付けています。

ここで紐付けるポートは
1-1. のポートフォワーディング設定で指定した
コンテナ側のポート番号と合わせる必要があります。

実行結果

コンテナ上でDjangoを起動して

root@86XXXXXXXXXX:~/django/dj_sample# python3 manage.py runserver 0:8000
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
June 03, 2019 - 19:10:40
Django version 2.2.1, using settings 'dj_sample.settings'
Starting development server at http://0:8000/
Quit the server with CONTROL-C.

ブラウザでhttp://127.0.0.1:8000 にアクセスすると、サンプルページが表示される
image.png

まとめ

docker上でアプリケーション開発環境を構築することで、
OSやミドルウェアの異なる複数のPCから
同じ環境で開発を行うことが出来ます。

また、本番移行時にもDockerさえ入れれば
開発環境と同じ環境での
アプリケーション稼働を担保出来ます。

もしかすると
アプリケーション開発が捗るかもしれません。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?