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


コメント