É possível
A solução é fingir no recipiente. Esta lib intercepta todos os programas de chamada do sistema usados para recuperar a hora e a data atuais.
A implementação é fácil. Adicione funcionalidade ao seu Dockerfile conforme apropriado:
WORKDIR /
RUN git clone https://github.com/wolfcw/libfaketime.git
WORKDIR /libfaketime/src
RUN make install
Lembre-se de definir as variáveis de ambiente LD_PRELOAD
antes de executar o aplicativo ao qual você quer que o tempo falsificado seja aplicado.
Exemplo:
CMD ["/bin/sh", "-c", "LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 FAKETIME_NO_CACHE=1 python /srv/intercept/manage.py runserver 0.0.0.0:3000]
Agora você pode alterar dinamicamente a hora do servidor:
Exemplo:
import os
def set_time(request):
print(datetime.today())
os.environ["FAKETIME"] = "2020-01-01" # Note: time of type string must be in the format "YYYY-MM-DD hh:mm:ss" or "+15d"
print(datetime.today())