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