以docker-compose 启动zabbix 4.0

从zabbix 官方gitlab仓库下载的 zabbix-docker-4.0.38.ziphttp://zabbix-docker-4.0.38.zip/

按照官方的文档 5 Installation from containers 使用docker-compose 启动时,不能成功.

$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml up -d
amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml ps
                   Name                                  Command                   State                                   Ports                           
-----------------------------------------------------------------------------------------------------------------------------------------------------------
zabbix-docker-4038_db_data_pgsql_1            sh                               Exit 0                                                                      
zabbix-docker-4038_postgres-server_1          docker-entrypoint.sh postgres    Up                                                                          
zabbix-docker-4038_zabbix-server_1            /sbin/tini -- /usr/bin/doc ...   Up               0.0.0.0:10051->10051/tcp,:::10051->10051/tcp               
zabbix-docker-4038_zabbix-web-nginx-pgsql_1   docker-entrypoint.sh             Up (unhealthy)   0.0.0.0:80->8080/tcp,:::80->8080/tcp,                      
                                                                                                0.0.0.0:443->8443/tcp,:::443->8443/tcp    

查询zabbix-docker-4038_postgres-server_1的日志得到

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ docker logs -f zabbix-docker-4038_postgres-server_1

PostgreSQL Database directory appears to contain a database; Skipping initialization

2022-03-08 11:49:04.018 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2022-03-08 11:49:04.018 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2022-03-08 11:49:04.035 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-03-08 11:49:04.136 UTC [24] LOG:  database system was shut down at 2022-03-08 11:48:57 UTC
2022-03-08 11:49:04.156 UTC [1] LOG:  database system is ready to accept connections
2022-03-08 11:49:05.678 UTC [65] FATAL:  role "--dbname" does not exist
2022-03-08 11:49:10.687 UTC [70] FATAL:  role "--dbname" does not exist

角色 --dbname 不存在 ,其实这个是 zabbix-docker-4038_zabbix-web-nginx-pgsql_1 发送请求时 缺少 参数 造成的

进入 zabbix-docker-4038_zabbix-web-nginx-pgsql_1 容器,找到入口脚本.

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ docker exec -it zabbix-docker-4038_zabbix-web-nginx-pgsql_1 bash
bash-5.0$ find / -name docker-en*
find: /var/log/apache2: Permission denied
/usr/bin/docker-entrypoint.sh
find: /root: Permission denied
find: /proc/tty/driver: Permission denied
bash-5.0$

在 脚本/usr/bin/docker-entrypoint.sh 的 101行左右 找到 --dbname,由此得知,是因为没有配置环境变量 ${DB_SERVER_ROOT_USER} 造成的

    while [ ! "$(psql --host ${DB_SERVER_HOST} --port ${DB_SERVER_PORT} --username ${DB_SERVER_ROOT_USER} --dbname ${DB_SERVER_DBNAME} --list --quiet 2>/de
        echo "**** PostgreSQL server is not available. Waiting $WAIT_TIMEOUT seconds..."
        sleep $WAIT_TIMEOUT 
    done

所以只需要给 zabbix-docker-4038_zabbix-web-nginx-pgsql_1 添加 上 环境变量 DB_SERVER_ROOT_USER 即可解决

给 env_vars/.env_db_pgsql 添加一行

DB_SERVER_ROOT_USER=zabbix

最终该文件内容如下:

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ cat env_vars/.env_db_pgsql 
# DB_SERVER_HOST=postgres-server
# DB_SERVER_PORT=5432
DB_SERVER_ROOT_USER=zabbix
# POSTGRES_USER=zabbix
POSTGRES_USER_FILE=/run/secrets/POSTGRES_USER
# POSTGRES_PASSWORD=zabbix
POSTGRES_PASSWORD_FILE=/run/secrets/POSTGRES_PASSWORD
# POSTGRES_DB=zabbix
POSTGRES_DB=zabbix
# DB_SERVER_SCHEMA=public
# POSTGRES_USE_IMPLICIT_SEARCH_PATH=false
amax@ubuntu18-dev:~/zabbix-docker-4.0.38$

再次执行 以下命令

$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml up -d

发现可以正常启动zabbix

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml ps
                   Name                                  Command                  State                                   Ports                            
-----------------------------------------------------------------------------------------------------------------------------------------------------------
zabbix-docker-4038_db_data_pgsql_1            sh                               Exit 0                                                                      
zabbix-docker-4038_postgres-server_1          docker-entrypoint.sh postgres    Up                                                                          
zabbix-docker-4038_zabbix-server_1            /sbin/tini -- /usr/bin/doc ...   Up             0.0.0.0:10051->10051/tcp,:::10051->10051/tcp                 
zabbix-docker-4038_zabbix-web-nginx-pgsql_1   docker-entrypoint.sh             Up (healthy)   0.0.0.0:80->8080/tcp,:::80->8080/tcp,                        
                                                                                              0.0.0.0:443->8443/tcp,:::443->8443/tcp

但是默认的zabbix图表中无法显示中文,需要挂载中文字体到容器中

我用的是微软雅黑字体 

msyh.ttficon-default.png?t=M276https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf下载后重命名为 DejaVuSans.ttf ,存放在 env_vars 目录下

amax@ubuntu18-dev:~/zabbix-docker-4.0.38$ ls env_vars/
DejaVuSans.ttf

接着修改docker-compose_v3_alpine_pgsql_latest.yaml 30行左右, 在volumes 添加一行:

   - ./env_vars/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:ro

添加后的部分结果如下:

 zabbix-web-nginx-pgsql:
  image: zabbix/zabbix-web-nginx-pgsql:alpine-4.0-latest
  ports:
   - "2080:8080"
   - "20443:8443"
  volumes:
   - /etc/localtime:/etc/localtime:ro
   - /etc/timezone:/etc/timezone:ro
   - ./env_vars/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf:ro
   - ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro

然后重新运行

$ docker-compose -f docker-compose_v3_alpine_pgsql_latest.yaml up -d

即可实现中文显示图表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值