从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.ttfhttps://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
即可实现中文显示图表