如何使用docker-compose强制时间进入Docker容器

时间:2016-10-18 07:52:02

标签: docker docker-compose

这是我的docker撰写文件

version: '2'
services:
  client:
    build: .
    container_name: client
    depends_on:
      - mysql
    environment:
      MYSQL_USER: api
      MYSQL_PASSWORD: api
      MYSQL_ROOT_PASSWORD: root
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: api
      MYSQL_PASSWORD: api
    ports:
      - "3306:3306"

我在客户端容器上运行测试(运行debian)。
测试取决于自定义日期创建MySQL数据以来的日期。
所以,我想强制执行将日期放入容器(两个容器)中,以便客户端中的date和mysql中的now()返回给定的较旧日期。

编辑:当我运行docker容器时,它获取当前时间到linux映像以及数据库。有什么办法可以将这些值设置为2014.01.01(某个特定日期),但不会改变。所以容器内的行为总是相同的

2 个答案:

答案 0 :(得分:1)

Docker容器从主机继承系统日期 - 您无法在容器内手动更改它,例如这将无法建立:

FROM ubuntu
RUN date -s '2014-01-01 00:00:01'

您可以做的是在容器中安装NTP客户端,并将其指向与主机不同的NTP服务器。然后,您需要做的就是编写一个存根NTP服务器,它始终返回固定的日期和时间......

答案 1 :(得分:0)

如果您需要特定时区而不是特定时间,则可以使用TZ变量

  

docker run --env TZ = $ {TIMEZONE}

https://en.wikipedia.org/wiki/List_of_tz_database_time_zones