下载docker-compose
下载地址:
https://github.com/docker/compose/releases
mv docker-compose-linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
docker-compose --version
编写docker-compose.yaml
cat docker-compose.yaml
# 声明docker-compose的版本,未来该参数会被移除!
version: '3.8'
# 定义各个服务类型
services:
# 我们可以自定义服务的名称,最好见名之意
mysql-server:
# 指定镜像的地址
image: mysql:8.0.36-oracle
# 指定容器的名称
container_name: mysql-server
# 指定重启策略
restart: unless-stopped
# 指定环境变量
environment:
MYSQL_ROOT_PASSWORD: "zabbix"
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
# 加入自定义网络
networks:
- zabbix-net
volumes:
- /data/zabbix_mysql/data:/var/lib/mysql
# 启动是传参
command: ["--character-set-server=utf8", "--collation-server=utf8_bin", "--default-authentication-plugin=mysql_native_password"]
zabbix-java-gateway:
container_name: zabbix-java-gateway
image: zabbix/zabbix-java-gateway:alpine-7.0-latest
restart: unless-stopped
networks:
- zabbix-net
zabbix-server:
container_name: zabbix-server-mysql
# 依赖哪个服务
depends_on:
- mysql-server
image: zabbix/zabbix-server-mysql:alpine-7.0-latest
restart: unless-stopped
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
MYSQL_ROOT_PASSWORD: "zabbix"
ZBX_JAVAGATEWAY: zabbix-java-gateway
networks:
- zabbix-net
# 指定端口映射
volumes:
- /data/zabbix-server/conf:/etc/zabbix
ports:
- "10051:10051"
zabbix-web-nginx-mysql:
container_name: zabbix-web-nginx-mysql
depends_on:
- zabbix-server
image: zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest
ports:
- "80:8080"
restart: unless-stopped
environment:
ZBX_SERVER_HOST: "zabbix-server"
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
MYSQL_ROOT_PASSWORD: "zabbix"
networks:
- zabbix-net
networks:
zabbix-net:
name: zabbix
ipam:
driver: default
config:
- subnet: 172.20.100.0/24
gateway: 172.20.100.254
启动并验证
创建数据卷目录:
mkdir /data/zabbix-server/conf
mkdir /data/zabbix_mysql/data
docker-compose up -d
docker ps
启动的时候请注意:
volumes:
- /data/zabbix-server/conf:/etc/zabbix
docker-compose中这段配置会将容器内的文件覆盖,所以先启动这个容器然后将里面的文件copy出来
docker cp zabbix-server-mysql:/etc/zabbix/zabbix_server.conf /data/zabbix-server/conf/
登录zabbix: 默认账户密码: Admin/zabbix
部署完成。
部署完成过几分钟之后会发现:
这是因为我们是容器部署的,此容器没开启10050端口,不必理会,删除即可。