Docker | 2週間で実務レベルに到達するDocker学習:Dockerfile入門(最重要) - Day4

Docker Docker
スポンサーリンク

Day4:Dockerfile入門(最重要)前半

テーマ:自分のアプリを“誰でも動かせる形”にするための Dockerfile の基礎を理解する

Day4 の前半では、Docker 学習の中でも最重要テーマである
Dockerfile(ドッカーファイル)
を、初心者でも迷わず理解できるように丁寧に解説します。

今日のゴールは、
「自分の Node.js / Python アプリをコンテナ化できるようになること」
です。

Dockerfile を理解すると、あなたのアプリは
「どの PC でも、どの環境でも、同じ動作をする」
という強力な再現性を手に入れます。


Dockerfileとは何か

アプリを“どう動かすか”を Docker に教えるレシピ

Dockerfile は、
「このアプリを動かすには、こういう環境を作ってね」
と Docker に指示するためのファイルです。

料理でいうレシピ。
プラモデルでいう組み立て説明書。
ゲームでいうチュートリアルのようなもの。

Dockerfile があると、Docker はその通りに環境を作り、
どこでも同じアプリが動く ようになります。


まずは最小の Dockerfile を理解する

以下は Node.js アプリの最小構成です。

FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "app.js"]
Dockerfile

これを1行ずつ噛み砕いて説明します。


FROM:どんな環境を使うか指定する

FROM node:18

これは
「Node.js 18 が入った公式の環境を使ってね」
という意味です。

Dockerfile の最初の1行は必ず FROM です。

Python の場合はこうなります。

FROM python:3.11
Dockerfile

WORKDIR:作業フォルダを決める

WORKDIR /app

これは
「これからの作業は /app というフォルダで行うよ」
という宣言です。

以降の COPY や RUN はすべて /app を基準に動きます。


COPY:ホストのファイルをコンテナにコピー

COPY . .

これは
「今のフォルダ(ホスト)を /app(コンテナ)にコピーする」
という意味です。

例:
ホスト側に app.js があれば、コンテナ内の /app/app.js にコピーされます。


RUN:コンテナ内でコマンドを実行

RUN npm install

これは
「コンテナの中で npm install を実行して依存パッケージを入れてね」
という指示です。

Python ならこうなります。

RUN pip install -r requirements.txt
Dockerfile

CMD:コンテナ起動時に実行するコマンド

CMD [“node”, “app.js”]

これは
「コンテナが起動したら node app.js を実行してね」
という意味です。

Python ならこうなります。

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

Dockerfile の全体像を“絵”で理解する

Dockerfile の流れはこうです。

  1. どんな環境を使う? → FROM
  2. 作業フォルダは? → WORKDIR
  3. 何のファイルを入れる? → COPY
  4. 何をインストールする? → RUN
  5. 最後に何を実行する? → CMD

この流れを理解すれば、
どんな言語でも Dockerfile を書けるようになります。


Dockerfile を使ってアプリを動かす流れ

Step1:Docker イメージを作る

docker build -t myapp .

Step2:コンテナを起動

docker run -p 3000:3000 myapp

これで、あなたのアプリが Docker 上で動きます。


前半まとめ

あなたがここまで理解できていれば、Day4 前半はクリアです。

  • Dockerfile は「アプリを動かすためのレシピ」
  • FROM → WORKDIR → COPY → RUN → CMD の流れで構成される
  • Node.js でも Python でも基本は同じ
  • Dockerfile を書けば、どの PC でも同じ環境で動かせる
Docker
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました