docker 开发环境搭建

服务搭建

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值