
どもども
今回は「Dockerの環境構築」について解説します。

環境構築ってややこしいよね

こんなあなたにピッタリな記事👇
.env
とdocker-compose.yml
どこに置くのが正解?- ファイルを分けると起動時に困るのでは?
- なんとなくルートに全部置いてるけど…整理した方がいいの?
がまぁまぁわかります!
未経験でも気軽に!サブスク型プログラミングスクール【Freeks】
Dockerとは?
Dockerとは、アプリを動かすための環境(OS・ミドルウェアなど)をまるごとパッケージできるツールです。
コンテナ単位でアプリを動かすことで、開発環境の差異をなくし、誰でも同じように動作させることができます。
より詳しいDockerの基礎はこちら👇
.envとdocker-compose.ymlの配置パターン3つ比較
今回は方法③を採用し、解説していきます。
パターン | .env の場所 | .yml の場所 | 特徴 | 向いている ケース |
---|---|---|---|---|
方法① | ルート直下 | ルート直下 | 最もシンプル 初心者向け | 個人開発 小規模 |
方法② | docker/ | docker/ | Docker構成を一元管理 | 環境分けが多い |
方法③ | ルート直下 | docker/ | アプリ側との再利用性&保守性◎ | チーム開発 中〜大規模 |
.env と docker-compose.yml を分けておく理由
理由1:アプリと共通で使えるようにするため
.env
は Next.js / Node.js / Laravel などのアプリケーションでも使うことが多いので、ルートに置いておくと共通で参照しやすいです。
理由2:Docker関連ファイルをまとめて保守性を上げるため
こうしておけば、Dockerに関する設定がひと目でわかり、プロジェクトの構成が整います。

今回の構成ディレクトリ図
今回は方法③を採用し、解説していきます。

項目 | 理由 |
---|---|
.env をルートに配置 | アプリ側でも再利用できるようにするため |
docker-compose.yml をdocker/ に配置 | Docker関連ファイルをまとめて保守性を上げるため |
env_file を使わない | Compose v2では ${VAR} 展開が効かず空文字になることがあるため |
start.sh を使う | 環境変数の読み込みと起動コマンドを自動化するため |
stop.sh を使う | 安全にコンテナを停止するための補助スクリプト |
env_file を使わない理由を詳しく!

このように env_file:
で .env
を読み込んでも、
Compose v2 では ${APP_VERSION}
のような docker-compose.yml 内の変数展開が効かないことがあります。
そもそも「Compose v2」って?
これは Compose v1 → v2 の進化による仕様の違いです。
比較項目 | Compose v1 | Compose v2 |
---|---|---|
実行方法 | docker-compose (ハイフンあり) | docker compose (スペース) |
技術基盤 | Pythonスクリプト | Docker CLIに統合 |
現在の標準 | ❌ 非推奨 | ✅ 推奨(Docker Desktopに内蔵) |
.env
の変数を正しく反映させる方法を、下記で紹介します。
Docker実行方法(2パターン)
パターン1:コマンドでオプションつけて毎回実行(手動)
docker compose --env-file .env -f docker/docker-compose.yml up -d
.env
ファイルの内容を明示的に読み込むdocker/docker-compose.yml
を指定して構成を読み込む.env
内の変数を${VAR}
として YAML に反映する- すべてのサービス(container)を バックグラウンド(-d)で起動する
- まだ存在しないボリューム・ネットワークがあれば自動作成される
→ 毎回打つのがやや面倒
パターン2: start.shで一発起動(自動)
先ほどの①のコマンドを毎回ターミナルに打つのはやや面倒です。
それを自動化したスクリプトになります。(環境変数を読み込み → docker-compose 起動)
start.sh
#!/bin/bash
docker compose --env-file .env -f docker/docker-compose.yml up -d
初回のみ実行権限を付与:
chmod +x start.sh
次からはこれだけでDockerを起動できる。
./start.sh
Dockerを停止したい場合の stop.sh
も書き方はほぼ同じです。違うのは up -d
を down
にするだけ!
シェルについてもっと知りたい方は、こちらの記事もおすすめです。

おつかれさまでした!
コメント