1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初学者向け:Dockerfileの基本構造と主な命令を解説した、未来の自分への備忘録

Last updated at Posted at 2024-12-09

はじめに

Dockerfileとは、Dockerイメージを作成するためのテキストファイルで、コンテナを構築する際に必要となります。

コンテナのベースとなるOSや必要なソフトウェア、設定を定義します。

本記事では、Dockerfileの基本構造や記述例を紹介し、未来の自分への備忘録としても活用できるように、初学者の方でも簡単に始められるよう解説します。

Dockerfileとは?

Dockerfileは、テキストファイル形式で記述され、Dockerイメージを作成するためのビルド指示を定義します。

スクリーンショット 2024-12-09 21.17.03.png
引用画像:https://qiita.com/gon0821/items/f9e3bcbb6cb01d4ef7fa

Dockerfileを基にdocker buildコマンドを実行すると、指定された内容に基づいてカスタマイズされたDockerイメージが生成されます。

Dockerfileの基本構造

Dockerfileの記述は基本的に上から順に実行されます。

# ベースとなるイメージを指定
FROM python:3.9-slim

# 作業ディレクトリを設定
WORKDIR /app

# 必要なファイルをコンテナにコピー
COPY requirements.txt .

# 必要なパッケージをインストール
RUN pip install -r requirements.txt

# アプリケーションコードをコピー
COPY . .

# コンテナ内で実行するコマンドを指定
CMD ["python", "app.py"]

上記のファイルは、主要な命令を含む簡単なDockerfileの例です。

主な命令の解説

1. FROM

FROM命令は、使用するベースとなるDockerイメージを指定します。

FROM python:3.9-slim

このイメージはコンテナの初期状態となり、すべての操作はこのベースイメージに基づいて行われます。

ここでは、Python 3.9の軽量イメージ(python:3.9-slim)を使用しています。

これは最小限のPython環境を提供し、アプリケーションの依存関係を追加でインストールすることを前提としています。

2. WORKDIR

WORKDIR命令は、コンテナ内で作業を行うディレクトリを指定します。

WORKDIR /app

このディレクトリ内でファイル操作やコマンドの実行が行われるようになります。

ここでは、作業ディレクトリを/appに設定しています。

この後、COPYRUNコマンドでファイルを/appディレクトリ内に操作します。

3. COPY

COPY命令は、ホストのファイルやディレクトリをコンテナ内にコピーするために使用されます。

COPY requirements.txt .

ここでは、ホストのrequirements.txtファイルをコンテナ内の現在の作業ディレクトリ(/app)にコピーしています。

これにより、依存関係を後でインストールするために必要なファイルがコンテナに配置されます。

COPY . .

こちらもCOPY命令ですが、今回はカレントディレクトリ(.)にあるすべてのファイルとディレクトリをコンテナ内のカレントディレクトリ(/app)にコピーしています。

これにより、アプリケーションのコード全体がコンテナに取り込まれます。

4. RUN

RUN命令は、コンテナビルド時にコマンドを実行するための命令です。

RUN pip install -r requirements.txt

このコマンドはビルド時に実行され、実行結果がイメージに反映されます。

ここでは、pip install -r requirements.txtというコマンドを実行しています。

このコマンドは、requirements.txtにリストされているPythonパッケージをインストールします。これにより、アプリケーションの必要なライブラリがインストールされます。

5. CMD

CMD命令は、コンテナが起動されたときに実行するコマンドを指定します。

CMD ["python", "app.py"]

これはコンテナ起動時に実行され、通常はアプリケーションのエントリーポイントを設定します。

ここでは、python app.pyというコマンドを指定しています。

コンテナが起動すると、app.pyというPythonスクリプトが実行され、アプリケーションが動作を開始します。

まとめ

ここまでお読みいただき、ありがとうございました!記念すべき150本目の記事に選ばれたテーマは「Dockerfile」でした(笑)!

今回は、基本的な構成を理解することで、アプリケーションのDockerfileの基本構造と主な命令についての知識を体系的に整理しました!

今後もDocker周りの知識整理を続けていきますので、この内容が誰かの技術的な支えとなれば幸いです。

おまけ:Dockerを使ったReactアプリ開発

通っているITスクールの課題で、ReactとDockerを使って複数のアプリを作成した際の備忘録記事です。

自分のローカル環境で「クソゲー」を量産してしまいましたが、個人的にはDockerやReactに関する知識が身につき、良い個人開発の経験となりました(笑)。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?