🤖
compose.yaml を用いて、多人数・複数環境で同一の環境を構築できるようにする
compose.yaml を使って環境を構築する
- 今回の環境
- MacOS 14.3.1
- Lima 0.21.0
- 以下のような作業用のディレクトリ、及びファイルを作成する。
./sample1 ├── compose.yaml └── web └── index.html
- compose.yaml に以下の内容をコピー、保存する。
※dockerイメージのタグに「latest」を指定すると、その時点での最新バージョンを取得してしまうため、必ずタグを指定する。compose.yamlservices: web: image: httpd:2.4.58 ports: - "8081:80" volumes: - ./web:/usr/local/apache2/htdocs
- 仮想Linux環境にsshで接続し、sample1 ディレクトリで以下のコマンドを実行する。command
docker compose up -d
- Apacheが起動するので、ブラウザから表示を確認する。
http://127.0.0.1:8081
- コンテナを停止する。command
docker compose down
ポート番号の設定を外に出す
先の compose.yaml を利用することで共通の環境を構築出来るようにはなったが、環境によっては「8081」ポートが別プロジェクトで利用されてしまっている、といった場合が考えられるので、共通化したくない部分を外部化する。
- 以下の作業用のディレクトリ、及びファイルを作成する。
※「.env」ファイルを追加しただけ。./sample1 ├── .env ├── compose.yaml └── web └── index.html
- .env に以下の内容をコピー、保存する。.env
ports="8081:80"
- compose.yaml を以下のように書き換える。
※.envファイルの読み込み、及び.envファイルに記述した変数portsを値として設定しただけ。compose.yamlservices: web: env_file: - ./.env image: httpd:2.4.58 ports: - ${ports} volumes: - ./web:/usr/local/apache2/htdocs
- あとは先と同様に仮想Linux環境から起動する。command
docker compose up -d
おまけ(複数のコンテナを起動する場合)
- 今回は以下のような構成を想定。
※別にこのようなディレクトリ階層でなくてもOK。. ├── sample1 │ ├── .env │ ├── compose.yaml │ └── web │ └── index.html └── sample2 ├── .env ├── compose.yaml └── web └── index.html
- sample1、sample2の.envはそれぞれ以下のようにポート番号を記述する。
compose.yaml はどちらも前のものと同一でOK。.env sampel1ports="8081:80"
.env sample2ports="8082:80"
- 先と同様に仮想Linux環境にsshで接続し、sample1、sample2ディレクトリで以下のコマンドを実行する。command
docker compose up -d
- コンテナを停止する場合も、それぞれのディレクトリでdownコマンドを実行する。command
docker compose down
Discussion