Docker Composeでコンテナの起動コマンドを外部ファイルに定義する
Docker ホスト側の作業フォルダとコンテナ側のフォルダを同期させるで、Dockerを使った基本的な開発環境が作成できましたが、以下のように、コンテナの起動コマンドのオプションが多くなってしまい、毎回入力するのが煩わしくなってきました。
$ docker run --name my-server -d -p 8080:80 --mount type=bind,source=$(pwd)/src/,target=/usr/share/nginx/html/ nginxDocker Composeを使用すれば、コンテナの起動オプションなどを外部ファイルに定義しておき、そのファイルを指定すれば定義した方法でコンテナを起動することができます。
Docker Composeは複数のコンテナを使用を簡単にするなどの利点がありますが、わかりやすくするために、ここでは1つのコンテナの起動を外部ファイル化する方法で紹介します。
docker-compose.ymlファイルの作成
最初に、docker-compose.ymlファイルを作成します。
また、フォルダ構成は以下のようにします。
- src
- index.html
- docker-compose.yml
このファイルにコンテナの起動オプションなどを定義します。
上記のコンテナ起動コマンドをファイルに定義すると以下のようになります。
docker-compose.ymlversion: "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