MENU
オンライン講座開催中

【Docker入門】Dockerfileの書き方|NginxにHTMLを追加してローカルで表示するまで

【Docker入門】Dockerfileの書き方|NginxにHTMLを追加してローカルで表示するまで

前回の記事ではdocker-composeを使って既存のイメージからWordPressを起動しました。今回はDockerfileを使って自分だけのオリジナルイメージを作る方法を解説します。

目次

Dockerfileとは

Dockerfileは「自分だけのイメージを作るための設計書」です。nginxやmysqlなど既存のイメージをベースにして、自分のファイルや設定を追加したカスタムイメージを作れます。

Dockerfile(設計書を書く)
 ↓ docker build
イメージ(オリジナルイメージの完成)
 ↓ docker run
コンテナ(実際に動く)

Dockerfileを使うメリットは、同じイメージを誰でも再現できることです。「このDockerfileさえあれば同じ環境が作れる」という状態になります。

「独自イメージ」「カスタムイメージ」という言葉について

Docker界隈では、Dockerfileを使って自分で作ったイメージのことを「独自イメージ」や「カスタムイメージ」と呼びます。nginxやmysqlのようにDocker Hubで公開されている既製品のイメージに対して、自分でファイルや設定を追加して作ったイメージのことを指します。今回で言えばnginxをベースにindex.htmlを追加した「my-nginx」がカスタムイメージです。技術書や記事でよく出てくる言葉なので覚えておくと便利です。

STEP1:作業フォルダを作る

mkdir ~/Desktop/my-docker && cd ~/Desktop/my-docker

STEP2:HTMLファイルを作る

コンテナの中に入れるHTMLファイルを作成します。

cat > index.html << 'EOF'




My Docker Page


Dockerで動いています!

これは独自イメージから起動したコンテナです。

EOF

STEP3:Dockerfileを作る

cat > Dockerfile << 'EOF'
FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.html
EOF

Dockerfileの命令を解説

命令意味
FROM nginx:latestベースとなるイメージを指定する。ここではnginxの最新版をベースにする
COPY index.html /usr/share/nginx/html/index.html手元のindex.htmlをコンテナ内のnginxのHTMLフォルダにコピーする

FROMは必ず1行目に書きます。既存のイメージをベースにして、その上に自分の変更を積み重ねていくイメージです。COPYは「手元のファイルをコンテナの中のどこに置くか」を指定します。

よく使うDockerfileの命令一覧

命令意味
FROMベースイメージを指定する(必須・1行目)FROM nginx:latest
COPY手元のファイルをコンテナ内にコピーするCOPY index.html /usr/share/nginx/html/
RUNイメージビルド時にコマンドを実行するRUN apt-get install -y curl
CMDコンテナ起動時に実行するコマンドを指定するCMD ["python", "app.py"]
WORKDIR作業ディレクトリを指定するWORKDIR /app
ENV環境変数を設定するENV PORT=8080
EXPOSEコンテナが使うポート番号を記載する(ドキュメント的な役割)EXPOSE 80

STEP4:イメージをビルドする

docker build -t my-nginx .

コマンドの意味

部分意味
docker buildDockerfileからイメージを作る命令
-t my-nginx作るイメージに「my-nginx」という名前をつける(-tはtagの略)
.Dockerfileがある場所を指定する(.は現在のフォルダという意味)

ビルドが成功すると以下のように表示されます。

[+] Building 0.1s (7/7) FINISHED
 => [1/2] FROM docker.io/library/nginx:latest
 => [2/2] COPY index.html /usr/share/nginx/html/index.html

Dockerfileの命令が1行ずつステップとして実行されているのがわかります。FROMとCOPYの2行なので[1/2][2/2]の2ステップになっています。

STEP5:コンテナを起動して確認する

docker run -d -p 8080:80 my-nginx

ブラウザでhttp://localhost:8080にアクセスして、作成したHTMLの内容が表示されれば成功です。既存のnginxイメージではなく、自分でカスタムしたmy-nginxイメージからコンテナが起動しています。

イメージの確認・削除

ビルドしたイメージは以下のコマンドで確認できます。

docker images

my-nginxイメージが一覧に追加されているのが確認できます。不要になったイメージは以下のコマンドで削除できます。

docker rmi my-nginx

まとめ

Dockerfileを使うことで既存のイメージをベースにした独自イメージを作れます。FROM・COPY・RUN・CMDの4つの命令を覚えておけば基本的なDockerfileは書けます。次のステップとして作成したイメージをAWSのECR(Elastic Container Registry)にpushして、ECS上で本番運用する方法を学びます。

目次