我有一个非常简单的ASP.NET v4.7 Web应用程序,该应用程序在本地开发笔记本电脑上的docker容器中运行。
Web应用程序尝试连接到DocumentDb,但这失败了,因为容器的时间戳是完全错误的,因此Jwt令牌验证自然会失败。确切的ASP.NET代码并不重要。这更多地说明了为什么Docker容器的时间戳与主机不同。
请注意,我正在使用Windows容器。我的dockerFile如下所示:
FROM microsoft/aspnet:4.7.2-windowsservercore-1803
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
当我连接到容器并运行“时间”时,得到以下信息:
docker container exec -it <containerId> cmd
c:\>time
The current time is: 0:29:49.87
c:\>tzutil /g
South Africa Standard Time
当我在笔记本电脑上的主机上执行此操作时,我得到:
C:\>time
The current time is: 15:42:45.72
Enter the new time:
C:\>tzutil /g
South Africa Standard Time
码头工人在哪里得到那个疯狂的时间戳?有没有一种在启动时与主机同步的方法?
我的笔记本电脑的操作系统版本是:Win 10,v1803(内部版本17134.471) 我正在运行:适用于Windows CE v2.0.0.0-win81(29211)的Docker引擎,版本为18.09.0
答案 0 :(得分:0)
不幸的是,到目前为止,唯一的解决方案是http://github.com/Microsoft/aspnet-docker/issues/120中指出的“等待并腌制”
感谢@ikkentim指出问题所在。
我怀疑我的容器也许无法访问互联网并且无法同步其时钟,但由于今天早上才开始正常工作,因此无法对其进行验证。
如果我找到比“等待”更有用的解决方案,我将发布更好的答案。