缘起

继上一次笔者把zabbix部署整理成compose方式之后,就想着把云服务器现在用的zabbix换成compose方式,方便后续修改以及升级。本来先是把所有在用的容器commit了一份镜像,准备编写yaml进行集中管理,没想到途中居然遇到了不少问题,尝试了几次遇到最多的问题就是连不上数据库容器。

遂着手查数据库容器报错,看是不是数据库账号密码编码格式不对,折腾了一番依旧不行。这里最奇怪的是,同样的yaml文件在两台虚拟机上都能跑起来,就是生产服务器上不行!笔者尝试了换镜像数据库版本等等,无果,最后放弃。

升级docker-compose

直到今天,想到云服务器这么裸奔着也不是事,还是得装上,然后突然想到诶,是不是跟我的docker-compose版本和docker版本有关系?遂尝试升级:

这里先查看版本号:

docker-compose --version

发现云服务器上的版本是1.2,然后去docker官网查看最新版本号是多少,不幸没找到…

在bing上搜索找到了github的仓库地址:

Releases · docker/compose (github.com)

发现最新版本居然都已经更新到2.9.0版本了😂,而我还在使用1.2,并且我也忘记我当时是怎么装的了

这里在页面找到对应架构的文件下载:

https://github.com/docker/compose/releases/download/v2.9.0/docker-compose-linux-x86_64

注意:这个文件是使用go语言编写,是一个单独的二进制文件,并不是压缩包!

下载下来之后直接mv到sbin下赋予执行权限

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

chmod u+x /usr/local/bin/docker-compose

查看版本,大功告成!

[root@cloud-hw01 zabbix]# docker-compose --version**
Docker Compose version v2.9.0

docker-compose up -d成功跑起来了

[root@cloud-hw01 zabbix]# docker-compose ps
NAME                              COMMAND                  SERVICE                  STATUS              PORTS
zabbix-mysql-server-1             "docker-entrypoint.s…"   mysql-server             running             3306/tcp, 33060/tcp
zabbix-zabbix-java-gateway-1      "docker-entrypoint.s…"   zabbix-java-gateway      running             0.0.0.0:10052->10052/tcp, :::10052->10052/tcp
zabbix-zabbix-server-1            "/sbin/tini -- /usr/…"   zabbix-server            running             0.0.0.0:10051->10051/tcp, :::10051->10051/tcp
zabbix-zabbix-web-nginx-mysql-1   "docker-entrypoint.sh"   zabbix-web-nginx-mysql   running             0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 8443/tcp

Dingtalk_20220809151544

总结

总的来说,这次还是因为经验不足!居然没有第一时间想到可能是版本不兼容的问题,有时候方向走歪了,再怎么搞也是不行的,所以得先把预先可能出现的情况排查一遍,定期关注常用的组件的升级和功能发布。