Docker設定ファイルの基本メモ✐
docker-compose.yml
Dockerコンテナは、dockerイメージから作られる。
dockerイメージは、Dockerfileから作られる。
docker-compose.ymlは?
Docker Composeを使用するための設定ファイル
Docker Composeでは複数のコンテナを生成、アプリの実行ができる。
Dockerfileとの違い
Docerfileは1つのコンテナに対する設定ファイルだけど、
docker-compose.ymlでは複数のコンテナの設定が可能で、
コンテナ間の関係についても設定できる。
■ドキュメントルートの設定について
環境構築で1つのDBを共有する2つのサービスをdockerで立ち上げた。
<ファイル構成>
ワークスペース
├── Dockerfile
| ├── www/index.php
| └── admin/index.php
|
├── mysql
│ └── 20241001.sql
├── php
│ └── php.ini
└── var
| └── www
| └── html
|
└── docker-compose.yml
<ymlファイル>
services:
php1:
image: php:7.4.29-apache
build: ./dockerfiles/www
container_name: php1
volumes:
- ./var/www/html:/var/www/html
- ./php/php.ini:/usr/local/etc/php/php.ini
ports:
- 8080:80
depends_on:
- db
environment:
- APACHE_DOCUMENT_ROOT=/var/www/html/work
php2:
image: php:7.4.29-apache
build: ./dockerfiles/admin
container_name: php2
volumes:
-
image: php:7.4.29-apache
webサーバーコンテナに対して、指定したPHPバージョンとapacheのイメージがdockerhubからインストールされる。 -
build: ./dockerfiles/www
Dockerfileがある場所のパスを書く -
container_name:
コンテナ名。同じコンテナ名は付けれない -
volumes:
コンテナは簡単に生成/削除できる一時的な環境なので、コンテナ削除されたときにデータもなくなるけど、volumesによってコンテナ生成する際にデータをコンテナに反映することができる。
→ コンテナ生成時にローカルのデータをコンテナに反映させるようにパスを記載する。 -
ports:
このポート番号を異なるものにすると、同時にwebサーバーを立てることができる -
depends_on:
コンテナの依存関係の設定
例えば- db
を記載すると、dbコンテナが起動してからphpコンテナを起動される -
environment:
Apacheの設定を記載する
■docker-composeコマンド
-
docker-compose up -d
・まだイメージが作成されていなければ、イメージを作成して、さらにコンテナを作成・起動する
・コンテナをバックグラウンドで起動させる。同ターミナルで作業を続行できる。 -
docker-compose up
・すでにコンテナが存在すれば、イメージ・コンテナの再作成は行わず、(停止中の)コンテナを起動するだけ
Discussion