【Docker環境構築】.envとdocker-compose.ymlはどこに置く?おすすめの配置と起動方法まとめ

【Docker環境構築】.envとdocker-compose.ymlはどこに置く?おすすめの配置と起動方法まとめ 開発ツール(Dev Tools)
【Docker環境構築】.envとdocker-compose.ymlはどこに置く?おすすめの配置と起動方法まとめ
この記事は約5分で読めます。
てんハロ運営者
てんハロ運営者

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

バグヲ
バグヲ

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

てんハロ運営者
てんハロ運営者

こんなあなたにピッタリな記事👇

  • .envdocker-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 v1Compose 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
  1. .env ファイルの内容を明示的に読み込む
  2. docker/docker-compose.yml を指定して構成を読み込む
  3. .env 内の変数を ${VAR} として YAML に反映する
  4. すべてのサービス(container)を バックグラウンド(-d)で起動する
  5. まだ存在しないボリューム・ネットワークがあれば自動作成される

→ 毎回打つのがやや面倒

パターン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 -ddown にするだけ!

シェルについてもっと知りたい方は、こちらの記事もおすすめです。

てんハロ運営者
てんハロ運営者

おつかれさまでした!

更新をF5連打で待つの、そろそろやめませんか?
( ブログ更新をメールでそっとお知らせします🙇‍♂️ )

スパムはしません!詳細については、プライバシーポリシーをご覧ください。

コメント