【ISSUE】【mac】Docker初心者が最短で「Django」 の開発環境作ってみた
2024年12月23日 17:28
流石に物理的には持ち歩けませんが笑、今回は開発環境をポータブル化するべく「docker」を使って環境を作っていきたいと思います。docker初めて使う民なので、下調べ多めで行きます。
dockerで作成したい開発環境群はこちら。最低限これが作れて動けば問題なさそう。
・python3.5.x + pip3(主にDjango)
・ruby2.5.1 + Rails 5.x
・php 7.x
dockerに関しての記事は、こちらの記事がとても参考になりました。ここまでまとまってるのすごい。
https://qiita.com/gold-kou/items/44860fbda1a34a001fc1
インストールに関しては、こちらの記事が参考になりました。
https://qiita.com/teradonburi/items/8c23806e20ec8efc0ef4
どうもdockerは「dockerfile」というファイルに書かれている情報を元に環境を構築していくようです。前回書いた「Brewfile」とかと同じ原理っぽそう。そのdockerfileをgithubで管理して、リポジトリにpushしたら、自動的にdocker-imageを作ってくれるように連携ができるらしい。
dockerfile更新したら、毎回手動で作り直す手間が面倒なので、先に設定しておきます。
参考になった記事はこちらです
https://qiita.com/Brutus/items/19f02df409e859406914
この設定(Automated build ってやつ)をしておけば、masterブランチが更新されたら自動的に最新のイメージが生成されるみたいでした。
今後、dockerで開発することを考えると様々な環境を作ることになりそうなので、dockerfileに関しては以下のようなディレクトリを構成してgit管理することにしました。
pythonのDocker-imageは公式の物がDocker-Hubにあるみたいですが、今回は勉強も兼ねてubuntu上に環境を構築していくことにします。
そして、作成したDockerfileに以下を記述します。以下のDockerfileの内容を元にimageが生成されます。なので、ここに色々追記していくことで、カスタムimageを生成することができます。
そしてDockerfileと同じ場所にrequirements.txtを作成します。必要なパッケージを書き込んだら、masterブランチにコミット/プッシュします。すると、自動的にDockerfile, requirements.txtを読み込みdocker-imageの生成が始まります。
image作成中のlogなどは、DockerHubから確認することができます。(これは失敗している例です)
エラーを確認したければ、エラーがでてるbuildをクリックすると詳細がみれます。
実際にmac上で正常にdocker-buildができるかどうかを確認する場合には以下のコマンドを実行します。<DOCKER_IMAGE_NAME>
には、自分でdocker-imageにつける名前を入力します。DockerHubで管理している場合には、DockerHubで作成したアカウント名/イメージ名
にしておかないとpushすることができないので注意!!
色々処理が流れますが、最終的にSuccessfully tagged <DOCKER_IMAGE_NAME>:latest
の表示が出ていれば成功しています。docker images
コマンドを実行してimageが表示されていれば成功です。
さて、開発環境のベースが出来上がったわけですが、これをもとにプロジェクトの元になるコンテナを作っていきたいと思います。このコンテナを複数作れるところがいいところなんだと思います。同じような環境のプロジェクトがコマンド1つで作れるわけですから...。
このコマンドを実行することで、コンテナを作成できます。どのようなコンテナを作成しているかは以下の通りです。
dockerプロセスが正常に動作していれば、開発環境構築は終了です。
あとはコンテナ内に入って操作したりします。
を実行することで、コンテナ内のbashを操作することが可能。以下のようなディレクトリ構造になっていれば問題なし。
あとは通常通り、コンテナ内のdjangoでrunserverを 0.0.0.0:8000 に向けて起動すれば、ローカルマシンで localhost:8000 で通信することができる。
コンテナ自体はバックグラウンドで起動しているため、コンソールを抜けてもサーバーが落ちることはありません。
とりあえずこれで、dockerでDjangoの開発環境は構築できたので、めでたしめでたし。
[cv:issue_marketplace_engineer]
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。