Docker/Kubernetes 実践コンテナ開発入門 メモ
- 作者:山田 明憲
- 発売日: 2018/08/25
- メディア: 単行本(ソフトカバー)
これをやっていました。
第一版なので、正誤表をみつつ進めてますが、自分の打ち間違いも含め途中途中ハマりながらやっています。
4.2.7、P133でハマったので、状態と解決方法をメモで残しておきます。
todo_mysql_masterにコマンドでアクセスする場面で、masterが数秒おきに起動したり停止したりして、うまく進めなくなりました。
どこで止まっているのか確認するために、masterのログを確認します。
$ docker container exec -it manager docker service logs todo_mysql_master
以下が取得したログ
(省略) todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it. todo_mysql_master.1.m4qjkgjrkz8w@b56ba56fda4c | Version: '5.7.30-log' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server (GPL) todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | 2020-07-03 09:18:33+00:00 [Note] [Entrypoint]: Creating database tododb todo_mysql_master.1.m4qjkgjrkz8w@b56ba56fda4c | 2020-07-03 09:18:40+00:00 [Note] [Entrypoint]: Temporary server started. todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | 2020-07-03 09:18:33+00:00 [Note] [Entrypoint]: Creating user gihyo todo_mysql_master.1.m4qjkgjrkz8w@b56ba56fda4c | Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | 2020-07-03 09:18:33+00:00 [Note] [Entrypoint]: Giving user gihyo access to schema tododb todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | 2020-07-03T09:16:23.960358Z 0 [Note] Failed to start slave threads for channel '' todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | 2020-07-03T09:16:23.970909Z 0 [Note] Event Scheduler: Loaded 0 events todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03T09:16:39.145118Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | 2020-07-03T09:16:23.971724Z 0 [Note] mysqld: ready for connections. todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03T09:16:39.148152Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | Version: '5.7.30-log' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server (GPL) todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03T09:16:39.153249Z 0 [Note] Failed to start slave threads for channel '' todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03T09:16:39.163731Z 0 [Note] Event Scheduler: Loaded 0 events todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | 2020-07-03 09:16:24+00:00 [Note] [Entrypoint]: Temporary server started. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | 2020-07-03 09:18:33+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/prepare.sh todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | this container is master todo_mysql_master.1.we3ge92vurbg@b56ba56fda4c | /docker-entrypoint-initdb.d/prepare.sh: line 6: return: can only `return' from a function or sourced script todo_mysql_master.1.m4qjkgjrkz8w@b56ba56fda4c | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it. todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03T09:16:39.164852Z 0 [Note] mysqld: ready for connections. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it. todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | Version: '5.7.30-log' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server (GPL) todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03 09:16:39+00:00 [Note] [Entrypoint]: Temporary server started. todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | 2020-07-03 09:16:28+00:00 [Note] [Entrypoint]: Creating database tododb todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | 2020-07-03 09:16:28+00:00 [Note] [Entrypoint]: Creating user gihyo todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it. todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | 2020-07-03 09:16:28+00:00 [Note] [Entrypoint]: Giving user gihyo access to schema tododb todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03 09:16:43+00:00 [Note] [Entrypoint]: Creating database tododb todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03 09:16:43+00:00 [Note] [Entrypoint]: Creating user gihyo todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03 09:16:43+00:00 [Note] [Entrypoint]: Giving user gihyo access to schema tododb todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | 2020-07-03 09:16:28+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/prepare.sh todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | /docker-entrypoint-initdb.d/prepare.sh: line 6: return: can only `return' from a function or sourced script todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | todo_mysql_master.1.vtqqahkpt1zw@a362cdfc8205 | this container is master todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | 2020-07-03 09:16:43+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/prepare.sh todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | this container is master todo_mysql_master.1.ucp8l1j3p8ck@a362cdfc8205 | /docker-entrypoint-initdb.d/prepare.sh: line 6: return: can only `return' from a function or sourced script
何回かログを取得してみるとどれも、
/docker-entrypoint-initdb.d/prepare.sh: line 6: return: can only `return' from a function or sourced script
で最後が終わっているようです。
該当のprepare.sh
の6行目は return 0
となっていると思います。
修正前: return 0
修正後: exit
こちらに変更したら、masterのコンテナが停止せずに動くようになりました。