DockerfileのWORKDIRとは?具体例と一緒に理解しよう

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年9月)

✔当記事は以下のような疑問を抱える方へ向けて書かれています

「DockerfileのWORKDIRってどのように利用するの?」

「WORKDIRの指定の仕方を正確に理解したい」

「具体的なWORKDIRの使用例を知りたい」

✔当記事を読むことで得られる知識

  • Dockerfile内でのWORKDIRの基本適用法
  • WORKDIRの正確な指定方法と応用例
  • 具体的なWORKDIRの使用例

当記事では、DockerfileにおけるWORKDIR指定の基本から応用的な使い方まで、具体例に基づいて詳細にわたり解説しています。

ぜひお読みいただき、Dockerfileの理解を深めてください。

✔手を動かして学びたい方へ

Dockerfileの基本について、動画で一から解説しています。

実際にDockerfileを作って、コンテナを起動するまでわずか30分でマスター

ぜひご覧ください。

DockerfileでDjangoアプリを簡単公開|Dockerチュートリアルvol.3
Dockerのチュートリアル第3段。Dockerfileについての解説動画です。✔Dockerチュートリアル再生リスト✔Dockerfile関連記事

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Dockerのきほん

こちらでは、Dockerの基本的な概念と流れについてお伝えしていきます。

Dockerfileをご説明する前に、Dockerの基本をご覧ください。

  • Dockerとは?
  • Dockerの基本的な流れ

Dockerとは?

Dockerは、コンテナ技術を使用したソフトウェア開発のためのプラットフォームです。

開発者が異なる環境で、同じコードを実行できるようになります。

結果として、開発からデプロイまでのプロセスが効率的になるのです。

コンテナ化によってリソースの効率的な使用が可能になるため、コスト削減にも寄与します。

Dockerの基本的な流れ

Dockerの基本的な流れは、以下のとおり。

  • Dockerfileの記述:作成するイメージの設定図
  • イメージのビルド:docker buildコマンド
  • コンテナの実行:docker runコマンド

この一連の流れによって、アプリケーションの移植性と管理が容易になります。

Dockerfileの主要な記述

Dockerfileの主要な構成要素に焦点を当て、Dockerfileの基本をお伝えします。

  • Dockerfileとその構成要素(FROM, RUN, CMD)の概要
  • WORKDIRとその重要性の説明

Dockerfileとその構成要素(FROM, RUN, CMD)の概要

DockerfileはDockerイメージの設計図です。

基本的な構成要素として、以下が挙げられます。

  • FROMでベースイメージを指定:FROM ubuntu:latest
  • RUNでコマンドを実行:RUN apt-get update
  • CMDでコンテナ起動時のコマンドを指定:CMD [“echo”, “Hello, Docker!”]

WORKDIRとその重要性の説明

WORKDIR指令は、Dockerfile内での作業ディレクトリを設定するために使用されます。

WORDKDIRを指定することで、以降の指令がそのディレクトリ内で実行されるのです。

WORKDIR /app

以降のコマンドを/appディレクトリで実行します。

WORKDIRRUN cdmkdirの代替として使用することで、可読性と保守性を向上さるのです。

DockerfileのWORKDIRの詳細

こちらでは、WORKDIRの使い方に焦点を当てて詳しく解説します。

  • WORKDIRの使い方: 基本と詳細
  • トラブルシューティング: よくある問題とそれらの解決策
  • 附録: プラスアルファ情報とその他のヒント

WORKDIRの使い方: 基本と詳細

WORKDIRの使い方は、非常に直感的です。

WORKDIR /app

以降の指令が/appディレクトリで実行されます。

もしディレクトリが存在しない場合、新しく作成されます。

この指令は、Dockerfile内のコードを整理し、ほかの開発者にとって理解しやすくするために重要です。

トラブルシューティング: よくある問題とそれらの解決策

WORKDIRの使用に際しては、いくつかの共通の問題があります。

RUN cdmkdirの代わりにWORKDIRを使用しないと、以降のコマンドが予期せぬディレクトリで実行されることがある

このような問題を避けるために、WORKDIRを使用して明示的に作業ディレクトリを設定することが推奨されます。

補足: WORKDIR指定後のパス指定

例えば、相対パスを使用することで、前のWORKDIR指令からの相対位置を指定できます。

WORKDIR /app
WORKDIR ./src
/app/src

このようなテクニックを使うと、より柔軟にDockerfileを記述できます。

その他のDockerfileの指令

こちらでは、Dockerfileにおけるそのほかの重要な指令についてお伝えします。

  • 環境変数の設定:ENV
  • コンテナへのファイルコピー: COPYとADD

環境変数の設定:ENV

ENV指令は、Dockerfile内で環境変数を設定するために使用されます。

ビルド時や実行時にアクセスする値を指定しましょう。

ENV API_URL=https://api.example.com

アプリケーション内でこのURLを参照できます。

これによって、設定の管理と変更が容易になるのです。

コンテナへのファイルコピー: COPYとADD

COPYとADD指令は、ホストマシン上のファイルやディレクトリをDockerイメージ内にコピーするために使用されます。

  • COPY:基本的なコピーを提供
  • ADD:URLからのダウンロードなど追加の機能を持つ
COPY ./app /app

現在のディレクトリにあるappフォルダを、イメージ内の/appにコピーします。

この操作によって、アプリケーションのコードや依存ファイルをコンテナに組み込めるのです。

まとめ

当記事では、DockerfileのWORKDIRについて見てきました。

  • Dockerfileは、Dockerイメージの設計図
  • Dockerfileの構成要素(FROM, RUN, CMDなど)を理解することは、効果的なDocker使用の鍵
  • WORKDIRはコードの可読性と保守性を向上させるために重要

当記事を通じて、Dockerfileの基本とその主要な構成要素の理解が深まったことでしょう。

この知識を活用して、Dockerを使った開発の効率と品質を向上させてください。

タイトルとURLをコピーしました