为docker-compose应用版本3设置时区的最佳方法是什么?

时间:2018-11-14 05:39:11

标签: docker timezone docker-compose

这是我的docker-compose文件,如何使mysqlmongoscraper服务尊重我的本地计算机TZ或特定的TZ?是否必须根据设置方式对每个服务进行不同的配置?如您所见,我尝试使用环境变量设置scraper,但是如何为mysql服务设置它并确保mysql数据库尊重TZ?

version: '3.7'

services:
 mysql:
   image: mysql:8
   command: --default-authentication-plugin=mysql_native_password
   volumes:
     - mysql-data:/var/lib/mysql
     - ./:/home
   ports:
    - "3306:3306"
   environment:
     - MYSQL_ROOT_PASSWORD=xxxx
 mongo:
   image: mongo:3
   volumes:
     - mongo-data:/data/db
     - ./:/home
   ports:
     - "27017:27017"
   environment:
     - MONGO_DATA_DIR=/data/db
 scraper:
   image: ycshao/freedom_freedom
   depends_on:
     - mysql
     - mongo
   volumes:
     - ./:/app
   environment:
     - TZ=America/New_York
   command: bash -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && ./scripts/wait-for-resource-ready.sh && python main.py Scraper"
volumes:
  mysql-data:
    external:
      name: freedom-mysql-data-volume
  mongo-data:
    external:
      name: freedom-mongo-data-volume

2 个答案:

答案 0 :(得分:0)

将主机的时区安装到撰写文件中的容器可以解决问题。但是您需要按服务设置它。

volumes:
    - "/etc/timezone:/etc/timezone:ro"
    - "/etc/localtime:/etc/localtime:ro"

答案 1 :(得分:0)

我没有找到一种使主机和来宾计算机不知所措的好方法。因此,我最终只是执行命令将TZ设置为每台来宾计算机。这比装入卷以映射到主机要好,因为至少它是主机不可知的。