docker容器时间不同步

docker容器中mysql时间不同步问题

每日一点学习,加油~
个人博客地址:https://sopp.gitee.io/blog/

最近由于项目中需要进行时间同步,刚好项目中需要使用到docker,所以从docker方面入手进行时间同步。


1.首先进行容器和主机的时间同步。

在docker-compose的配置文件中,使用/etc/localtime:/etc/localtime参数进行容器时间同步。具体的示例如下:

mysql:
    build:
      #dockerfile的路径
      context: ./mysql
      #dockerfile的名称
      dockerfile: Dockerfile
    ports:
      - "3307:3306"
    #相当于docker run命令中的-e
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      #初始化的数据库名称
      - "MYSQL_DATABASE=test_compose"
      - "MYSQL_ROOT_HOST=%"
    #容器名称
    container_name: mysql-compose
    restart: always
    #数据卷映射关系,也就是把本地的目录,和mysql容器中的目录,进行对应映射。
    volumes:
      - "./mysql/data/:/var/lib/mysql"
      - "/etc/localtime:/etc/localtime"

说明:

 这里最重要的即为:/etc/localtime:/etc/localtime,使用这个配置,对docker容器和外部主机的时间进行同步。

2. 如果容器中存在mysql等,那么即需要同步mysql的时间与mysql容器的时间。

一般默认为配置mysql默认时区即可。具体示例如下:

mysql:
    build:
      #dockerfile的路径
      context: ./mysql
      #dockerfile的名称
      dockerfile: Dockerfile
    ports:
      - "3307:3306"
    #相当于docker run命令中的-e
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      #初始化的数据库名称
      - "MYSQL_DATABASE=test_compose"
      - "MYSQL_ROOT_HOST=%"
    #容器名称
    container_name: mysql-compose
    restart: always
    #数据卷映射关系,也就是把本地的目录,和mysql容器中的目录,进行对应映射。
    volumes:
      - "./mysql/data/:/var/lib/mysql"
      # - "/etc/localtime:/etc/localtime"
    #该选项中的命令会覆盖Dockfile中的CMD中的命令.lower_case_table_names参数是为了表名不区分大小写,default-authentication-plugin是8.0中密码加密策略不同带来的链接问题,如果不用8.0可不加此选项
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=20M',
          '--character-set-server=utf8mb4',
          '--collation-server=utf8mb4_bin',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
    ]

说明:

 这里最重要的即为:–default-time-zone=+8:00,表示mysql本地时区加8小时,为东8区。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值