Docker Composeでコンテナの起動コマンドを外部ファイルに定義する
Docker ホスト側の作業フォルダとコンテナ側のフォルダを同期させるで、Docker
を使った基本的な開発環境が作成できましたが、以下のように、コンテナの起動コマンドのオプションが多くなってしまい、毎回入力するのが煩わしくなってきました。
$ docker run --name my-server -d -p 8080:80 --mount type=bind,source=$(pwd)/src/,target=/usr/share/nginx/html/ nginx
Docker Compose
を使用すれば、コンテナの起動オプションなどを外部ファイルに定義しておき、そのファイルを指定すれば定義した方法でコンテナを起動することができます。
Docker Compose
は複数のコンテナを使用を簡単にするなどの利点がありますが、わかりやすくするために、ここでは1つのコンテナの起動を外部ファイル化する方法で紹介します。
docker-compose.ymlファイルの作成
最初に、docker-compose.yml
ファイルを作成します。
また、フォルダ構成は以下のようにします。
- src
- index.html
- docker-compose.yml
このファイルにコンテナの起動オプションなどを定義します。
上記のコンテナ起動コマンドをファイルに定義すると以下のようになります。
docker-compose.yml
version: "3.7"
services:
web:
image: nginx
container_name: "my-server"
volumes:
- ./src:/usr/share/nginx/html
ports:
- "8080:80"
デタッチモードで起動するオプション(-d
)は設定ファイルではなく、起動コマンドのオプションで指定します。
コンテナの実行
docker-compose.yml
のあるディレクトリをカレントディレクトリにして、以下のコマンドでDocker Compose
を実行します。
$ docker-compose up -d
起動中のコンテナを確認します。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
92f3e4687aeb nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp my-server
コンテナの停止
コンテナを停止するには以下のコマンドを実行します。
複数のコンテナをdocker-compose.yml
に定義して実行している場合、それらのコンテナはすべて停止します。
$ docker-compose stop
コンテナの削除
コンテナを削除するには以下のコマンドを実行します。
複数のコンテナをdocker-compose.yml
に定義して実行している場合、それらのコンテナはすべて削除されます。
$ docker-compose rm