プログラミングの必需品『Docker』の環境構築で躓いたところをまとめておきます

Djangoを使ってウェブサービスの開発を開始しました。

今回は、開発環境の構築時にエラーなどで躓いたところをまとめておきます。

目的はDockerを使ってDjangoの開発環境を構築し、コンテナが起動するところまでをまとめます。

手順は下記の記事を参考にして進めました。

▼参考にした記事▼

Django3.0の開発環境をDocker,Docker-compose,Poetryで作ってみた

https://qiita.com/k4ssyi/items/b8d1355fed43b526aee1

コンテナを起動させてlocalhostにアクセスし、Djangoが用意した初期画面(ロケットの画面)が表示されることを確認しました。

ホストOSの環境

surface

Windows10

Dockerfileの作成

記事では空のDockerfileを作成するために、touchコマンドを使用しておりますが、
Windows10のPowerShellで実行したところ、touchコマンドが利用できませんでした。

代わりにNew-Itemコマンドを使用しました。

PowerShell

$ New-Item dockerfile

カレントディレクトリに「dockerfile」が作成されます。

次にVisualStudioCodeを使用して、dockerfileの中身を編集します。

基本的には記事に紹介されているコードをそのままコピーでokです。

私はPCにpython3.9がインストールされているので、

FROM python:3.8 --> FROM python:3.9

に変更しました。

作成したdockerfileをbuildします。

ここで、Dockerを起動させておく必要があるのですが、

メモリのリソースが少ないとDockerを起動することができず、
その状態でコマンドを入力すると、エラーが発生してしまいます。

必ずDockerを起動させた状態でbuildコマンドを実行しましょう。

メモリのリソース不足解消

Dockerのsettingから Resource -> Advancedと進み
リソースを最小値に変更しました。

下記の記事を参照しました。

【Windows10】Docker環境をインストールする方法

https://algorithm.joho.info/programming/docker-for-windows-install/

これ以外にWindowsのAntimalwareのCPU使用率を下げる処理も行いました。

下記の記事を参考にしました。

対処法:Antimalware Service ExecutableのCPU使用率が高い

https://jp.easeus.com/partition-manager/antimalware-service-executable-high-cpu-usage.html

そして、DockerのRestartやPCの再起動をすることでDocker起動ができるようになりました。

稀にGoogleChromeなどを使用していると、メモリ不足でDockerが起動できないことがありました。

その場合はPCの再起動をしてまず初めにDockerを起動することで解消しました。

【補足】Poetryの初期設定について

コンテナ内でpoetry initコマンドを実行します。

console

<コンテナ>:/app# poetry init

四行目のAuthor [None, n to skip]:が表示された時だけ「n」を入力しました。

それ以外はEnterでOKです。

DockerfileとDocker-compose.ymlの文字コードエラー

記事中のDockerfile更新の箇所にて
記事内のコードをそのままコピペして利用すると、

docker-compose.ymlファイルをbuildした際に、
UnicodeEncodeErrorが発生します。

これはファイル内に日本語が利用されていることで発生するのですが、
記事中のdocker-compose.ymlに記載するコードには日本語が含まれておりません。

原因はdockerfileにありました。

dockerfileの後半のこの部分

COPY src/pyproject.toml pyproject.toml #追加
RUN poetry install # 追加

コメントアウトされている「#追加」「# 追加」
docker-compose.ymlをbuildした際に、UnicodeEncodeErrorを引き起こしています。

dockerfileとdocker-compose.ymlには日本語を書かないようにしました。

localhost:8000でロケットが表示されました。

以上がDockerを使ってDjangoの開発環境を作るまでに苦戦した箇所です。

4日間苦戦して何とかロケット画面にたどり着くことができました。

Dockerを使うのが今回初めてで
そもそもPowerShellの利用もほとんどしたことがなかったので、
ロケット画面が表示されたときはめちゃくちゃうれしかったです。

Dockerで苦戦している方がいらっしゃれば参考にしていただけると幸いです。

その他にYouTubeに参考となる動画がありましたのでシェアしておきます。

【2021年最新】Docker環境構築入門|14分でdocker-composeまで完全解説!【windows/mac対応】Dockerの使い方

https://youtu.be/VIzLh4BgKck

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です