В bash
вы можете просто заменить это на trap "my-cleanup-command" EXIT
. Эта ловушка будет запущена при выходе из скрипта, в том числе, если ему будет отправлен сигнал SIGINT. На мой взгляд, это обычно более элегантный подход...
За исключением того факта, что он -специфичен для bash. Ловушки EXIT упоминаются в POSIX, но их поведение не указано. Во многих других оболочках ловушка EXIT не запускается, если оболочка завершается из-за сигнала.
https://unix.stackexchange.com/a/57960/29483
Иногда я действительно ненавижу сценарии оболочки :).
Глядя на связанный ответ, я думаю, что менее специфичный для bash -способ гарантировать, что код не запустится после первой ловушки, будет немедленный выход. Кажется, есть разные способы сделать это, но вот самый простой, который я бы попробовал.
cleanup() {
echo "Clean up"
rm -rf "$dest"
}
trap cleanup EXIT
trap "exit 1" INT ERR
Параметр -p 8888:5000
, который вы используете в командной строке при запуске контейнера, указывает, что вы хотите сопоставить локальный порт 8888 с портом 5000 в контейнере Docker.
Таким образом, доступ к http://127.0.0.1:8888
, скорее всего, приведет к доступу к вашему приложению Flask в контейнере.
См. раздел EXPOSE (входящие порты)в документации по docker run
.