【ISSUE】【mac】Docker初心者が最短で「Django」 の開発環境作ってみた

0

2024年12月23日 17:28

開発環境は持ち歩く時代

流石に物理的には持ち歩けませんが笑、今回は開発環境をポータブル化するべく「docker」を使って環境を作っていきたいと思います。docker初めて使う民なので、下調べ多めで行きます。

dockerで作成したい開発環境群はこちら。最低限これが作れて動けば問題なさそう。

・python3.5.x + pip3(主にDjango)

・ruby2.5.1 + Rails 5.x

・php 7.x

docker

dockerに関しての記事は、こちらの記事がとても参考になりました。ここまでまとまってるのすごい。
https://qiita.com/gold-kou/items/44860fbda1a34a001fc1

インストールに関しては、こちらの記事が参考になりました。
https://qiita.com/teradonburi/items/8c23806e20ec8efc0ef4

先にdockerとgithubを連携させておく

どうもdockerは「dockerfile」というファイルに書かれている情報を元に環境を構築していくようです。前回書いた「Brewfile」とかと同じ原理っぽそう。そのdockerfileをgithubで管理して、リポジトリにpushしたら、自動的にdocker-imageを作ってくれるように連携ができるらしい。
dockerfile更新したら、毎回手動で作り直す手間が面倒なので、先に設定しておきます。

参考になった記事はこちらです
https://qiita.com/Brutus/items/19f02df409e859406914

この設定(Automated build ってやつ)をしておけば、masterブランチが更新されたら自動的に最新のイメージが生成されるみたいでした。

dockerを管理するディレクトリ

今後、dockerで開発することを考えると様々な環境を作ることになりそうなので、dockerfileに関しては以下のようなディレクトリを構成してgit管理することにしました。

img

python3.x系のdocker-imageを作る

pythonのDocker-imageは公式の物がDocker-Hubにあるみたいですが、今回は勉強も兼ねてubuntu上に環境を構築していくことにします。

img

そして、作成したDockerfileに以下を記述します。以下のDockerfileの内容を元にimageが生成されます。なので、ここに色々追記していくことで、カスタムimageを生成することができます。

img

そしてDockerfileと同じ場所にrequirements.txtを作成します。必要なパッケージを書き込んだら、masterブランチにコミット/プッシュします。すると、自動的にDockerfile, requirements.txtを読み込みdocker-imageの生成が始まります。

image作成中のlogなどは、DockerHubから確認することができます。(これは失敗している例です)
image.png

エラーを確認したければ、エラーがでてるbuildをクリックすると詳細がみれます。
image.png

実際にmac上で正常にdocker-buildができるかどうかを確認する場合には以下のコマンドを実行します。<DOCKER_IMAGE_NAME>には、自分でdocker-imageにつける名前を入力します。DockerHubで管理している場合には、DockerHubで作成したアカウント名/イメージ名にしておかないとpushすることができないので注意!!

img

色々処理が流れますが、最終的にSuccessfully tagged <DOCKER_IMAGE_NAME>:latestの表示が出ていれば成功しています。docker imagesコマンドを実行してimageが表示されていれば成功です。
image.png

docker-imageからコンテナを作る

さて、開発環境のベースが出来上がったわけですが、これをもとにプロジェクトの元になるコンテナを作っていきたいと思います。このコンテナを複数作れるところがいいところなんだと思います。同じような環境のプロジェクトがコマンド1つで作れるわけですから...。

img

このコマンドを実行することで、コンテナを作成できます。どのようなコンテナを作成しているかは以下の通りです。

img

img

img

img

img

img

dockerプロセスが正常に動作していれば、開発環境構築は終了です。

img

あとはコンテナ内に入って操作したりします。

img

を実行することで、コンテナ内のbashを操作することが可能。以下のようなディレクトリ構造になっていれば問題なし。

img

あとは通常通り、コンテナ内のdjangoでrunserverを 0.0.0.0:8000 に向けて起動すれば、ローカルマシンで localhost:8000 で通信することができる。

img

コンテナ自体はバックグラウンドで起動しているため、コンソールを抜けてもサーバーが落ちることはありません。

img

とりあえずこれで、dockerでDjangoの開発環境は構築できたので、めでたしめでたし。
image.png
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。