docker-compose一键启动环境

在D:\Desktop\damai_pro\DamaiEnv下创建文件

docker-compose.yml

version: '3.8'

networks:
  damai_net:
    driver: bridge

services:
  # ---------------- MySQL 5.7 ----------------
  mysql:
    image: mysql:5.7
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./mysql/log:/var/log/mysql
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql/conf.d
    command: --character-set-server=utf8 --collation-server=utf8_general_ci
    privileged: true
    networks:
      - damai_net

  # ---------------- Redis ----------------
  redis:
    image: redis:6.0.8
    container_name: redis
    ports:
      - "6379:6379"
    # 直接在启动命令中设置密码
    command: redis-server --requirepass 123
    networks:
      - damai_net

  # ---------------- Nacos ----------------
  nacos:
    image: nacos/nacos-server:v2.2.3
    container_name: nacos-server
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    environment:
      - MODE=standalone
      - nacos.core.auth.enabled=true
      - nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
      - nacos.core.auth.server.identity.key=XN3zr6HfJV%LjUPjRBQzBB
      - nacos.core.auth.server.identity.value=B3CU%K3AxEAMrgPBdKLRQRL
    networks:
      - damai_net

  # ---------------- Zookeeper ----------------
  zookeeper:
    image: zookeeper:latest
    container_name: zookeeper
    ports:
      - "2181:2181"
    restart: always
    volumes:
      - ./zookeeper/data:/data
      - ./zookeeper/conf:/conf
      - ./zookeeper/logs:/datalog
    networks:
      - damai_net

  # ---------------- Kafka (核心修复部分) ----------------
  kafka:
    image: wurstmeister/kafka:latest
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 0
      # 修复1:直接使用服务名 'zookeeper' 连接,不再依赖 IP
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      # 修复2:对外暴露 localhost,这样你本机 Java 代码可以用 localhost:9092 连接
      # 无论你连什么 WiFi,localhost 永远指向本机
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
    depends_on:
      - zookeeper
    networks:
      - damai_net

  # ---------------- Elasticsearch ----------------
  es:
    image: elasticsearch:8.5.2
    container_name: es
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - "discovery.type=single-node"
      - "ES_JAVA_OPTS=-Xms768m -Xmx768m"
      - "xpack.security.http.ssl.enabled=false"
      - "xpack.security.enrollment.enabled=true"
    networks:
      - damai_net

  # ---------------- Kibana ----------------
  kibana:
    image: kibana:8.5.2
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      # 直接使用服务名 'es' 连接
      - ELASTICSEARCH_HOSTS=http://es:9200
      - ELASTICSEARCH_USERNAME=kibana_system
      # 注意:这里需要你先启动一次ES生成密码后,再填入这里重启 Kibana
      # 此处为我的密码 zw200495
      - ELASTICSEARCH_PASSWORD=zw200495
      - "I18N_LOCALE=zh-CN"
    depends_on:
      - es
    networks:
      - damai_net

执行命令 docker-compose up -d

image-4faa5b53 image-fac0ccd4 image-9bec376e

由于 Docker Compose 只能负责启动,一些手动授权操作仍然需要做一次:

  1. MySQL 授权 : 容器启动后,需要执行授权命令,允许外部连接(因为容器是新的):

    docker exec -it mysql bash
    mysql -u root -p  (输入密码 root)
    use mysql;
    update user set host = '%' where user = 'root';
    flush privileges;
    exit;
    exit
    
  2. Elasticsearch 密码生成 :

    docker exec -it es /bin/bash
    ./bin/elasticsearch-setup-passwords interactive
    

验证:

http://localhost:8848/nacos

账号:nacos 密码:nacos

http://localhost:9200/

账号:elastic 密码:zw200495

http://localhost:5601/app/home#/

账号:elastic 密码:zw200495


企业级项目导航:⬅️ 03-实操 项目启动 | 04-docker-compose一键启动环境 | ➡️ 01-准备项目启动条件