How do you perform system tests with fixed time on Fargate?
I considered logging into the container using the aws ecs execute-command
and changing the time using the date command, but since privileged containers aren't supported on Fargate I get the following error occurred and I was unable to change it.
date: cannot set date: Operation not permitted
However, you can adjust the system time by using libfaketime. Although the version is old, the Dockerfile verified with Keycloak 19.0.2 image is shown below.
FROM quay.io/keycloak/keycloak:19.0.2 AS builder
USER root
RUN microdnf install -y git make gcc
RUN git clone https://github.com/wolfcw/libfaketime.git
WORKDIR /libfaketime/src
RUN make install
ENV LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
ENV FAKETIME="2025-04-24 10:30:00"
RUN date
WORKDIR /opt/keycloak
ENTRYPOINT [ "/opt/keycloak/bin/kc.sh" ]
If you enter the container and execute the date command as shown below, you will see that the value specified by the FAKETIME variable is fixed.
% aws ecs execute-command --cluster _clustername_ --task _taskID_ --interactive --command "/bin/bash"
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.
Starting session with SessionId: ecs-execute-command-xxxxxxxxx
[root@ip-NNN-NNN-NNN-NNN keycloak]# date
Thu Apr 24 10:30:00 UTC 2025
Please try it yourself.
Top comments (0)