docker centos 上的 Zabbix-server-mysql:latest 在安装过程中跳过了一些文件

docker centos 上的 Zabbix-server-mysql:latest 在安装过程中跳过了一些文件

我尝试在 docker 容器中的正版 centos 映像上安装 Zabbix-server-mysql:

[root@desktop]# docker run --rm -ti centos:latest /bin/bash
[root@0e4f336ff674]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
[root@0e4f336ff674]# rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
[root@0e4f336ff674]# yum install http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-server-mysql-3.2.3-1.el7.x86_64.rpm

本手册: https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages/server_installation_with_mysql由于需要在 MySQL 服务器上创建 zabbix DB,因此需要在安装过程中创建文件“/usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz”。但这个文件似乎丢失了:

[root@0e4f336ff674]# ls -ld /usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz
ls: cannot access /usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz: No such file or directory

有趣的是这个文件实际上存在于 *.rpm 文件中:

[root@0e4f336ff674]# rpm2cpio http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-server-mysql-3.2.3-1.el7.x86_64.rpm | cpio -t | grep create
./usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz

此外,该软件包似乎没有任何可以删除该/usr/share/doc/zabbix-server-mysql-3.2.3/目录的安装前或安装后脚本:

[root@0e4f336ff674]# rpm -qp --scripts http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-server-mysql-3.2.3-1.el7.x86_64.rpm
preinstall scriptlet (using /bin/sh):
getent group zabbix > /dev/null || groupadd -r zabbix
getent passwd zabbix > /dev/null || \
    useradd -r -g zabbix -d /var/lib/zabbix -s /sbin/nologin \
    -c "Zabbix Monitoring System" zabbix
:
postinstall scriptlet (using /bin/sh):

if [ $1 -eq 1 ] ; then 
        # Initial installation 
        /usr/bin/systemctl preset zabbix-server.service >/dev/null 2>&1 || : 
fi 
/usr/sbin/update-alternatives --install /usr/sbin/zabbix_server \
    zabbix-server /usr/sbin/zabbix_server_mysql 10
:
<...>

那么它可能有什么问题呢?

PS:我知道现有的官方 zabbix-on-docker 镜像:github.com/zabbix/zabbix-docker

答案1

可能它会阻止“systemctl preset”,因为在 systemd 控制的操作系统中,人们试图与 systemd 守护进程对话来执行该命令。然而,在 docker 容器中没有 systemd 守护进程。

您可以尝试使用以下方法来避免该潜在问题https://github.com/gdraheim/docker-systemctl-replacement执行“systemctl预设”。

答案2

根据https://github.com/tianon/docker-brew-ubuntu-core/issues/122,您应该将其添加到以下内容的顶部Dockerfile

# Do not exclude man pages & other documentation
RUN rm /etc/dpkg/dpkg.cfg.d/excludes

答案3

我无法找到create.sql.gz在 Docker CentOS 7 容器内运行时安装文件的方法(即使我可以在 systemd 正常运行的情况下启动它),但我做了以下解决方法:

wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.2.6/zabbix-4.2.6.tar.gz/download
mv download download.tar.gz
tar -xzvf download.tar.gz
cd zabbix-4.2.6/database/mysql
mysql -uzabbix -p[password] zabbix < schema.sql
mysql -uzabbix -p[password] zabbix < images.sql
mysql -uzabbix -p[password] zabbix < data.sql

然后就可以完成Zabbix的前端安装了。

create.sql.gz很烦人,但它有效,并且是我在无法从其他地方获取文件的情况下实现此目的的唯一方法。

答案4

/etc/yum.confCentOS Docker 映像的Yum 配置文件包含tsflags=nodocs阻止文档安装的内容。

Zabbixcreate.sql.gz文件作为文档的一部分安装,这就是它丢失的原因。

要安装该create.sql.gz文件,请注释掉文件tsflags中的行或修改它,在安装 Zabbix 之前/etc/yum.conf删除 no 。nodocs

相关内容