Você precisa ensinar seu aplicativo a controlar sua própria execução usando um método que sobreviva a um reinício / movimento de contêiner (pode ser um arquivo em um sistema de arquivos persistente / compartilhado, alguma informação em um banco de dados, algum serviço / aplicativo externo de coordenação , etc - o que for conveniente para o seu contexto).
Ao reiniciar, se o aplicativo perceber que ele já foi executado no intervalo especificado, ele sairá sem fazer nada. pode ser possível até ensiná-lo a pegar e concluir o trabalho anteriormente inacabado, se necessário:)
Se não for possível fazer isso dentro do aplicativo, você poderá colocar o aplicativo em um wrapper personalizado e fazê-lo dentro do wrapper.