Closed1
EphemeralなTailscaleノードを使っているDockerコンテナの停止時にすぐにTailnetから取り除く
コンテナが終了する直前に tailscale logout
を実行するといい。
参考:
ephemeral なノードで tailscale logout
すると、即時で tailnet から取り除かれ、同じ名前のノードをすぐに作れるようになる。
問題は、どのようにコンテナが終了する前に実行するかだが、ChatGPT に聞いたら教えてくれたのと、ぐぐったらだいたい似たような感じのことをやっている記事があった。
ChatGPT:
記事:
今回はシェルスクリプトだったので次のような感じになった:
Dockerfile
# 他は省略
CMD [ "/bin/bash", "/start.sh" ]
start.sh
#!/bin/ash
# 他の処理とか
# SIGTERM シグナルを捕捉した際に実行される関数
cleanup() {
echo "[#] Stopping..."
if [[ $TS_AUTHKEY ]]; then
tailscale logout
echo "[#] Tailscale stopped"
fi
}
# SIGTERM シグナルを捕捉するためのトラップ設定
trap 'cleanup' SIGTERM
# 無限ループ
while true; do
sleep 1 &
wait $!
done
# 通常、この行は到達しませんが、スクリプトが何らかの理由でここまで到達した場合、
# 明示的に終了コードを指定してスクリプトを終了させます
exit 0
このスクラップは2024/04/08にクローズされました