0

不知何故,在 Docker 映像重建后,我开始遇到 javascript 时区问题。它曾经可以工作,但是在 Docker 映像更新之后,生成的 Date 对象不再遵守 TZ 设置。结果,我们的时区依赖日期字符串格式测试失败了。

# in the tests
console.log(new Date("2016-04-01T00:00:00.000000+00:00"));
// It is very strange it says (Asia) at the end.
// In fact, it will say whatever I put in TZ
Fri Apr 01 2016 00:00:00 GMT+0000 (Asia)

# in Chrome developer tool
console.log(new Date());
Fri Apr 01 2016 08:00:00 GMT+0800 (CST)

gulpfile.js

gulp.task('test', ['_set_tpe_timezone'], runKarmaWebpackTests);
gulp.task('_set_tpe_timezone', function() {
  gutil.log('Setting timezone TZ = Asia/Taipei');
  process.env.TZ = 'Asia/Taipei';
  return;
});

我正在使用以下设置来运行 javascript 测试:

  • 吞咽+业力
  • 在 Docker 容器内
  • 在 gulpfile 中,在每次测试之前执行以下设置 process.env.TZ = 'Asia/Taipei';
  • 使用无头 Chrome 59
  • cat /etc/timezone=Etc/UTC
4

1 回答 1

0

虽然还没有找到根本原因,但找到了解决办法。由于之前没有出现这个问题,只是在a之后才出现docker system prune -a,所以基础镜像更新到了最新的,也就引入了这个bug。

作为临时解决方案,我已切换回旧的基础映像,它像以前一样工作,无需进行其他修改。我也将向 phusion 团队报告这一点。

原始 Dockerfile

FROM phusion/baseimage
...

新的 Dockerfile

FROM phusion/baseimage:0.9.21
...
于 2017-07-19T03:20:22.343 回答