docker-composeでのDockerコンテナ自動起動設定を変更する【メモ】

ツール
この記事は約3分で読めます。

概要

あるOSSソフトウェアが提供しているDockerコンテナが、OS(Mac)を再起動したタイミングで、意図せず勝手に起動してしまっていました。
この原因と自動起動を止める方法をメモとして残しておきます。

背景

HasuraというオープンソースのGraphQLエンジンを使ってみたかったので、調査のため公式サイトの手順にしたがってdocker-composeで環境を作りました。
ひととおり遊んで満足したので一旦調査を終え、Dockerコンテナを停止しました。

数日後、別の開発でDockerコンテナのWebアプリを起動してアクセスしたらなぜかHasuraのコンソールが表示されたことで、意図せずDockerコンテナが起動していることが発覚しました。

環境

  • macOS Mojave 10.14.5
  • Docker Desktop 2.0.0.3
  • docker-compose 1.23.2

原因

docker-compose.yamlに定義されていたrestart policyによるものでした。
具体的には、次のようにrestart: alwaysが指定されていたためです。

version: '3.6'
services:
  postgres:
    image: postgres
    restart: always
    volumes:
    - db_data:/var/lib/postgresql/data
  graphql-engine:
    image: hasura/graphql-engine:v1.0.0-alpha42
    ports:
    - "8080:8080"
    depends_on:
    - "postgres"
    restart: always
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:@postgres:5432/postgres
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      ## uncomment next line to set an admin secret
      # HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
volumes:
  db_data:

恥ずかしながらこの設定を知りませんでした。。。

参考

対応

docker-compose.yamlからrestart: alwaysを削除すると、以降OS起動時にDockerコンテナが自動起動されることはなくなります。

まとめ

公式ドキュメントはひととおり読みましょう。

コメント