Loading... nagios是一款不错的服务探测软件,将本地安装版本的nagios移植到容器版并部署在公有云服务器后,出现了时区不正确的现象。 docker-compose文件内容如下: ``` version: '3' services: nagios: #image: harbor.test.stesh.cn/jasonrivers/nagios:4.4.8 image: harbor.test.stesh.cn/jasonrivers/nagios:20230927 container_name: nagios ports: - "8080:80" # 映射到宿主机的端口 #- "5666:5666" # 映射到宿主机的端口 environment: - TZ="Asia/Shanghai" - NAGIOSADMIN_USER=nagiosadmin # Nagios 管理员用户名 - NAGIOSADMIN_PASS=Lab@1234 # Nagios 管理员密码 volumes: - /etc/localtime:/etc/localtime - ./config:/opt/nagios/etc # 配置文件目录 - ./var:/opt/nagios/var - ./run:/var/run #- ./data:/opt/nagios/var # 数据目录 #- ./plugins:/opt/Custom-Nagios-Plugins # 自定义插件目录 - ./libexec:/opt/nagios/libexec #- ./apacheconfig/nagios.conf:/etc/apache2/sites-available/nagios.conf restart: always networks: nagios-network: ipv4_address: 172.18.4.2 entrypoint: - sh - -euc - | rm -rf /opt/nagios/var/* chmod 777 /opt/nagios/var rm -rvf /var/run/* chmod 777 /var/run mkdir -p /var/run/apache2 /usr/local/bin/start_nagios networks: nagios-network: driver: bridge ipam: config: - subnet: 172.18.4.0/24 name: nagios-network ``` 根据gpt介绍,nagios会使用当前系统的时间和时区进行调用,修改当前系统时区的方式是: ``` sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime sudo systemctl restart nagios ``` 但是容器方式可能有特殊,会使用TZ环境变量。可是,当前的docker-compose.yml文件中明明是有`TZ="Asia/Shanghai"`的配置的,难道是引号的问题。 删掉引号,`docker-compose restart`后发现还是不行,且容器内的TZ值还是有引号。 ![2023-12-12T04:41:55.png][2] 难道是restart不生效,直接: ``` docker-compose down --remove-orphans docker-compose up -d ``` 发现已经可以了。 ![2023-12-12T04:42:11.png][1] 总结: 1. 稳妥起见,实现容器时区正确配置的方法是同时使用TZ=Asia/Shanghai和/etc/localtime文件映射。 2. 修改docker-compose.yml中的环境变量一般无需引号。且修改后,需要彻底停止容器后再次启动。 [1]: https://www.sddts.cn/usr/uploads/2023/12/3288885986.png [2]: https://www.sddts.cn/usr/uploads/2023/12/3776845147.png 最后修改:2024 年 05 月 11 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏