我有一个容器,在tomcat里面有一个正在运行的程序。我只需要在这个容器中更改日期,并测试我的程序行为。我有时间敏感的逻辑,有时需要看看几天或几个月后会发生什么。在码头可以吗?我读到,如果我在容器中更改日期,那么主机系统上的日期也会更改。但这对我来说不是个好主意。我需要在一个服务器上有这个应用程序的几个实例,并有可能为每个实例设置不同的时间。
但是,当我尝试更改容器中的日期时,我得到了错误:
sudo date 04101812
date: cannot set date: Operation not permitted
Fri Apr 10 18:12:00 UTC 2015
发布于 2018-10-15 16:24:49
我创建了一个包含libfaketime的Docker镜像,用于Alpine,但该过程可以在其他发行版中完成。
下面是一个使用Groovy的Java使用它的示例。但是Tomcat也可以使用。
FROM groovy:alpine
COPY --from=trajano/alpine-libfaketime /faketime.so /lib/faketime.so
ENV LD_PRELOAD=/lib/faketime.so \
DONT_FAKE_MONOTONIC=1
然后在执行docker运行时构建并传递FAKETIME
环境变量,例如
docker build -f fakedemo-java.Dockerfile . -t fakedemo
docker run --rm -e FAKETIME=+15d fakedemo groovy -e "print new Date();"
源文件在trajano / alpine-libfaketime | Github中,docker镜像文件在trajano/alpine-libfaketime | dockerhub 中
我还创建了一个基于Ubuntu的变体:trajano / ubuntu-faketime | Github
https://stackoverflow.com/questions/29556879
复制相似问题