服务搭建
1.redis 2.mysql 3.ribbitmq 4.mongodb 5. mongo-express 6.portainer
注意初始脚本必须重新构建的时候才生效需要1.删除已有镜像 2.删除data目录
version: '3'
services:
redis:
image: "redis:6.0"
# 容器名(以后的控制都通过这个)
container_name: redis-compose
hostname: redis-compose
restart: always
privileged: true
ports:
- 6379:6379
environment:
TZ: Asia/Shanghai
volumes:
- ./data/redis/:/data
- ./conf/redis:/etc/redis
- ./logs/redis/:/logs
command: ["redis-server","/etc/redis/redis.conf"]
mysql:
image: mysql:5.7
# 容器名(以后的控制都通过这个)
container_name: mysql-compose
hostname: mysql-compose
# 重启策略
restart: always
ports:
- "3306:3306"
privileged: true
volumes:
# 挂挂载配置文件
- ./conf/mysql:/etc/mysql/conf.d
# 挂载日志
- ./logs/mysql/:/var/log/mysql
# 挂载数据
- ./data/mysql:/var/lib/mysql
- ./init/mysql:/docker-entrypoint-initdb.d/
command: [
'mysqld',
'--innodb-buffer-pool-size=80M',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
environment:
# root 密码
MYSQL_ROOT_PASSWORD: 123456
#rabbitmq
rabbitmq:
#mq依赖的镜像
image: rabbitmq:3-management
container_name: rabbitmq-compose
hostname: rabbitmq-compose
# 重启策略
restart: always
ports:
- 15672:15672
- 5672:5672
volumes:
- ./data/rabbit:/var/lib/rabbitmq
- ./init/rabbit:/docker-entrypoint-initdb.d/
#environment:
# root 密码
#RABBITMQ_DEFAULT_USER: rabbit
#RABBITMQ_DEFAULT_PASS: rabbit
mongodb:
image: mongo:4.4
container_name: mongodb-compose
hostname: mongodb-compose
restart: always
networks:
- networkdb
command: --auth
environment:
# 时区上海
TZ: Asia/Shanghai
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: 123456
MONGO_INITDB_DATABASE: collector
MONGO_USERNAME: mongodb
MONGO_PASSWORD: mongodb
volumes:
- ./data/mongo/:/data/db
- ./init/mongo:/docker-entrypoint-initdb.d/
- ./conf/mongo:/etc/mongo/mongod.conf
- ./logs/mongo:/var/log/mongodb
ports:
- 27017:27017
mongo-express:
image: mongo-express
container_name: mongo-express-compose
hostname: mongo-express-compose
restart: always
depends_on:
- mongodb
networks:
- networkdb
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
ME_CONFIG_MONGODB_ADMINPASSWORD: 123456
ME_CONFIG_MONGODB_URL: mongodb://admin:123456@mongodb-compose:27017/
#docker监控
portainer:
image: portainer/portainer-ce
container_name: portainer-compose
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data/portainer/:/data
ports:
- "8000:8000"
- "9000:9000"
- "9443:9443"
networks:
networkdb:
config:软件配置目录
redis.conf
mongod.conf
init:软件初始目录
mkdir -p ./init/mongo
mkdir -p ./init/mysql
mkdir -p ./init/rabbit
data:软件数据目录
logs:软件日志目录
mysql初始脚本:创建初始用户(非root)并授权 init.sql
use mysql;
create user 'collector'@'%' IDENTIFIED by '!QAZ@WSX3edc';
grant all on *.* to collector@'%';
mongo初始脚本:init.sh 注意use数据库不能用环境变量代替,代替就生成用户失败 不知道为什么?
#!/bin/bash
echo "jjjjjjjjjjjjjjjjjjjjjjjjjjjjj"
echo "'$MONGO_USERNAME'"
echo "'$MONGO_PASSWORD'"
mongo <<EOF
use test;
db.createUser(
{
user: 'mongo',
pwd: 'mongo',
roles: [ { role: "readWrite", db: 'test' } ]
}
);
use collector;
db.createUser(
{
user: '$MONGO_USERNAME',
pwd: '$MONGO_PASSWORD',
roles: [ { role: "readWrite", db: 'collector' } ]
}
);
EOF
rabbitmq初始脚本 init.sh
#!/bin/bash
/opt/rabbitmq/sbin/rabbitmqctl add_user admin admin
/opt/rabbitmq/sbin/rabbitmqctl set_user_tags admin administrator
/opt/rabbitmq/sbin/rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
version: "3.8"
services:
# nacos/xxl-job改为连接mariadb数据库
# nacos-mysql:
# build:
# context: .
# dockerfile: ./config/nacos/mysql/Dockerfile
# image: nacos/mysql:8.0.31
# container_name: nacos-mysql
# hostname: nacos-mysql
# restart: always
# env_file:
# - ./config/nacos/mysql.env
# volumes:
# - ./data/nacos-mysql:/var/lib/mysql
# #- ./config/nacos/nacos-mysql/sql:/docker-entrypoint-initdb.d/
# ports:
# - "13306:3306"
# networks:
# - yaxt-network
# healthcheck:
# test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
# interval: 5s
# timeout: 10s
# retries: 10
nacos:
image: nacos/nacos-server:v2.3.2
container_name: nacos
hostname: nacos
restart: always
env_file:
- ./config/nacos/nacos-standlone-mysql.env
volumes:
- ./logs/nacos/:/home/nacos/logs
ports:
- "8848:8848"
- "9848:9848"
networks:
- yaxt-network
depends_on:
- mariadb
xxl-job-admin:
image: xuxueli/xxl-job-admin:2.4.1
container_name: xxl-job-admin
hostname: xxl-job-admin
restart: always
privileged: true
environment:
PARAMS: '
--spring.datasource.url=jdbc:mysql://192.168.2.205:3306/xxl_job?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
--spring.datasource.username=root
--spring.datasource.password=yaxt-mariadb
--xxl.job.accessToken=xxl_job'
volumes:
- ./logs/xxl-job-admin/:/data/applogs
ports:
- "8080:8080"
networks:
- yaxt-network
depends_on:
- mariadb
mariadb:
image: mariadb:11.5.2
container_name: mariadb
hostname: mariadb
restart: always
ports:
- 3306:3306
volumes:
- ./config/mariadb/my.cnf:/etc/mysql/conf.d/my.cnf
- ./data/mariadb/:/var/lib/mysql
- ./config/mariadb/sql:/docker-entrypoint-initdb.d/
environment:
TIME_ZONE: Asia/Shanghai
MARIADB_USER: yaxt
MARIADB_PASSWORD: yaxt-mariadb
MARIADB_DATABASE: yaxt
MARIADB_ROOT_PASSWORD: yaxt-mariadb
networks:
- yaxt-network
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 5s
timeout: 10s
retries: 10
mysqld-exporter:
image: prom/mysqld-exporter:v0.15.1
container_name: mysqld-exporter
hostname: mysqld-exporter
restart: always
ports:
- 9104:9104
environment:
TIME_ZONE: Asia/Shanghai
command:
- "--mysqld.username=root:yaxt-mariadb"
- "--mysqld.address=mariadb:3306"
networks:
- yaxt-network
depends_on:
- mariadb
adminer:
image: adminer
container_name: adminer
hostname: adminer
restart: always
ports:
- 8084:8080
depends_on:
rabbitmq:
condition: service_healthy
redis:
image: "redis:6.2"
container_name: redis
hostname: redis
restart: always
privileged: true
ports:
- 6379:6379
networks:
- yaxt-network
environment:
TZ: Asia/Shanghai
volumes:
- ./data/redis/:/data
- ./config/redis/:/etc/redis
- ./logs/redis/:/logs
command: ["redis-server","/etc/redis/redis.conf"]
redis-exporter:
image: bitnami/redis-exporter:1.65.0
container_name: redis-exporter
hostname: redis-exporter
restart: always
ports:
- 9121:9121
environment:
TZ: Asia/Shanghai
command:
- '--redis.addr=redis://redis:6379'
- '--redis.password=yaxt-redis'
networks:
- yaxt-network
depends_on:
- redis
mongodb:
image: mongo:6
container_name: mongodb
hostname: mongodb
restart: always
command: --auth
environment:
TZ: Asia/Shanghai
MONGO_INITDB_ROOT_USERNAME: yaxt-root
MONGO_INITDB_ROOT_PASSWORD: yaxt-mongodb
MONGO_INITDB_DATABASE: admin
volumes:
- ./data/mongo/:/data/db
- ./config/mongo/init:/docker-entrypoint-initdb.d/
- ./config/mongo/conf:/etc/mongo/mongod.conf
- ./logs/mongo/:/var/log/mongodb
ports:
- 27017:27017
networks:
- yaxt-network
mongodb_exporter:
image: bitnami/mongodb-exporter:0.41.2
container_name: mongodb_exporter
hostname: mongodb-exporter
restart: always
environment:
TZ: Asia/Shanghai
MONGODB_URI: mongodb://yaxt:yaxt-mongodb@mongodb:27017/admin?ssl=false
ports:
- 9216:9216
networks:
- yaxt-network
depends_on:
- mongodb
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
hostname: rabbitmq
restart: always
ports:
- 15672:15672
- 5672:5672
- 15692:15692
- 15675:15675
- 1883:1883
- 5552:5552
networks:
- yaxt-network
volumes:
- ./data/rabbit/:/var/lib/rabbitmq
- ./config/rabbit/:/etc/rabbitmq
- ./config/rabbit/init:/docker-entrypoint-initdb.d/
environment:
TZ: Asia/Shanghai
RABBITMQ_DEFAULT_USER: yaxt
RABBITMQ_DEFAULT_PASS: yaxt-mq
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 30s
timeout: 10s
retries: 5
minio:
image: minio/minio:RELEASE.2024-09-22T00-33-43Z
container_name: minio
hostname: minio
restart: always
command: server /data --console-address ":9001"
ports:
- 9000:9000
- 9001:9001
volumes:
- ./data/minio/:/data
environment:
TZ: Asia/Shanghai
MINIO_ROOT_USER: yaxt
MINIO_ROOT_PASSWORD: yaxt-minio
sentinel-dashboard:
image: bladex/sentinel-dashboard:1.8.8
container_name: sentinel-dashboard
hostname: sentinel-dashboard
restart: always
ports:
- 8858:8858
environment:
sentinel.dashboard.auth.username: yaxt
sentinel.dashboard.auth.password: yaxt-sentinel
# elk作为单独项目,放置于用户目录elk文件夹下,独立部署
# elasticsearch:
# image: elasticsearch:7.10.1
# container_name: elasticsearch
# hostname: elasticsearch
# restart: always
# ports:
# - 9200:9200
# - 9300:9300
# volumes:
# - ./data/elasticsearch/:/usr/share/elasticsearch/data
# - ./logs/elasticsearch/:/usr/share/elasticsearch/logs
# environment:
# discovery.type: single-node
# xpack.security.enabled: false
# TAKE_FILE_OWNERSHIP: true
# networks:
# - yaxt-network
# kibana:
# image: kibana:7.10.1
# container_name: kibana
# hostname: kibana
# restart: always
# ports:
# - 5601:5601
# environment:
# - elasticsearch.hosts=http://elasticsearch:9200
# - I18N_LOCALE=zh-CN
# networks:
# - yaxt-network
# depends_on:
# - elasticsearch
# logstash:
# image: logstash:7.10.1
# container_name: logstash
# hostname: logstash
# restart: always
# ports:
# - 9600:9600
# - 9601:9601
# - 5044:5044
# - 9603:9603
# volumes:
# - ./config/logstash/conf.d:/usr/share/logstash/config/conf.d
# - ./config/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
# extra_hosts:
# - "es:192.168.8.75"
# networks:
# - yaxt-network
# depends_on:
# - elasticsearch
prometheus:
image: prom/prometheus:v2.20.1
container_name: prometheus
hostname: prometheus
restart: always
ports:
- 9090:9090
volumes:
- ./config/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml
networks:
- yaxt-network
node_exporter:
image: prom/node-exporter:v1.8.2
container_name: node_exporter
hostname: node_exporter
restart: always
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
ports:
- 9100:9100
environment:
TZ: Asia/Shanghai
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
networks:
- yaxt-network
grafana:
image: grafana/grafana:9.3.2
container_name: grafana
hostname: grafana
restart: always
ports:
- 3000:3000
environment:
- GF_SECURITY_ADMIN_USER=yaxt
- GF_SECURITY_ADMIN_PASSWORD=yaxt-grafana
- GF_USERS_ALLOW_SIGN_UP=false
networks:
- yaxt-network
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
restart: always
volumes:
- ./data/jenkins_home:/var/jenkins_home
- /usr/local/maven:/usr/local/maven
- /usr/local/jdk8:/usr/local/jdk8
- /usr/local/bin/sshpass:/usr/local/bin/sshpass
- /usr/local/node:/usr/local/node
- /usr/local/node14:/usr/local/node14
ports:
- "8083:8080"
- "50000:50000"
privileged: true
user: root
environment:
TZ: Asia/Shanghai
JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties -Xms2048m -Xmx2048m'
geoserver:
image: docker.osgeo.org/geoserver:2.26.1
container_name: geoserver
hostname: geoserver
restart: always
privileged: true
ports:
- 8081:8080
environment:
TZ: Asia/Shanghai
GEOSERVER_ADMIN_USER: yaxt
GEOSERVER_ADMIN_PASSWORD: yaxt-geoserver
volumes:
- ./data/geoserver/:/opt/geoserver_data/
networks:
- yaxt-network
tdengine:
image: "tdengine/tdengine:3.3.5.2"
container_name: tdengine
hostname: tdengine
restart: always
privileged: true
ports:
- 6030-6060:6030-6060
- 6030-6060:6030-6060/udp
environment:
TZ: Asia/Shanghai
volumes:
- ./data/taos/:/var/lib/taos
- ./logs/taos/:/var/log/taos
networks:
- yaxt-network
networks:
yaxt-network:
name: yaxt-network