Докер автоматически запускается при изменении данных карты тома - PullRequest
1 голос
/ 07 апреля 2019

У меня есть приложение весенней загрузки, работающее с java-изображениями в контейнере.В Dockerfile я копирую файл jar.Затем создайте собственное изображение для моего проекта и запустите его

. Я думаю, что, если я создам карту томов в моем jar-файле.По крайней мере, он будет запущен в первый раз.Мне нужна некоторая функциональность, например, когда я изменяю файл карты томов на моем хост-компьютере, необходимо повторно запустить докер.

Для HTML nginx будет работать нормально, так как он просто отображает HTML-файлы в определенной папке без повторного запуска.Но я сомневаюсь, что это будет работать для Java

Для повторного запуска автоматически, что это за команды.Произойдет ли это автоматически?

1 Ответ

1 голос
/ 07 апреля 2019

Что вам нужно сделать, это контролировать ваш файл с помощью inotify, и всякий раз, когда этот файл изменяется, вызывайте Docker API, чтобы он сбрасывал контейнер.

Для вызова Docker API изнутри контейнера,вы монтируете сокет Docker внутри контейнера следующим образом:

docker container run -it -v /var/run/docker.sock:/var/run/docker.sock ubuntu

Затем вы устанавливаете необходимые утилиты внутри контейнера:

apt-get update; apt-get install -y curl inotify-tools

Затем вы пишете скрипт, который должен вызываться всякий раз, когда вашизменения целевого файла:

echo "curl --unix-socket /var/run/docker.sock -X POST http:/v1.24/containers/<container_to_reset>/restart" > script
chmod +x ./script # Make sure the script is executable

Наконец, вы запускаете цикл, который выполняет ваш скрипт при каждом изменении целевого файла:

while inotifywait -e close_write <target_file>; do ./script; done
...