Я хотел бы, чтобы контейнер запускал определенную команду до того, как он остановится после выдачи команды docker container stop. Я нашел вопрос Как выполнить скрипт когда я завершаю Docker-контейнер, но на самом деле он не работает, так как контейнер продолжает падать после его создания, даже если я добавляю бесконечный цикл для выполнения при запуске. Я запускаю контейнер как: docker run -ti -d --name test stop_test
Что может быть не так?
Это мой файл докера:
#Starting with a ubuntu image
FROM ubuntu
#Installing all dependencies
#Copying files
COPY loop.sh .
COPY commands.sh .
COPY stop.sh .
#Running new container
RUN chmod +x commands.sh
RUN chmod +x stop.sh
CMD ["./commands.sh"]
#Adding Entrypoint
ENTRYPOINT [ "/bin/bash", "-c", "./stop.sh" ]
Сценарий остановки:
#!/bin/bash
#Defining cleanup procedure
cleanup() {
echo "Container stopped. Running script..."
}
#Trapping the SIGTERM
trap 'cleanup' SIGTERM
#Execute a command
less /etc/password &
#Wait
wait $!
#Cleanup
cleanup
Скрипт цикла:
#!/bin/bash
while :
do
sleep 300
done
Сценарий команды:
#!/bin/bash
./loop.sh