zukucode
主にWEB関連の情報を技術メモとして発信しています。

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

関連記事