一人前エンジニア道場

開発環境とインフラ基礎(Linux・Docker) / 約25分

Dockerfile・docker-composeの読み書き

なぜこれを学ぶか

Dockerfileの1行1行が読めれば、他人(やAI)が書いた環境構築コードのレビューができるようになります。

Dockerfileの主要命令: FROM(ベースイメージ指定)/ WORKDIR(作業ディレクトリ設定)/ COPY(ファイルをコンテナ内にコピー)/ RUN(ビルド時にコマンド実行)/ CMD(コンテナ起動時に実行するコマンド)。

docker build -t myapp .でイメージを作成し、docker run -p ホスト:コンテナ myappで起動します。-pのポートマッピングは「ホスト側の待受ポート:コンテナ内のポート」という対応関係を表します。

複数コンテナで構成するアプリはdocker-compose.ymlにまとめます。services:配下の各サービスにimage(使うイメージ)/ build(自前ビルド)/ ports(ポート)/ volumes(永続化)/ environment(環境変数)を書き、docker compose upで一括起動できます。

volumesはコンテナを削除してもデータを残すための仕組みです。コンテナ自体は使い捨てが基本のため、DBのデータなど残したい情報は必ずvolumeに置くのが実務での鉄則です。

重要ポイント

  • FROM/WORKDIR/COPY/RUN/CMDの役割を説明できる
  • ポートマッピング(ホスト:コンテナ)の意味を理解している
  • docker-composeで複数コンテナ・volumesの必要性を説明できる

コーディング演習実際に書く

docker-composeの`ports`設定(`["8080:80", "5432:5432"]`のような文字列配列)を、`{ host, container }`オブジェクトの配列に変換する関数`parsePortMappings`を実装してください。

function parsePortMappings(ports)

スキルセルフチェック

このレッスンの内容をどの程度理解できましたか?