概要
ある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コンテナが自動起動されることはなくなります。
まとめ
公式ドキュメントはひととおり読みましょう。
コメント