--- title: "04-docker-compose一键启动环境" created: 2025-12-10 aliases: - docker-compose一键启动环境 tags: - 项目 --- # docker-compose一键启动环境 在D:\Desktop\damai\_pro\DamaiEnv下创建文件 docker-compose.yml ```yaml 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.png]] ![[image-fac0ccd4.png]] ![[image-9bec376e.png]] 由于 Docker Compose 只能负责启动,一些**手动授权操作**仍然需要做一次: 1. **MySQL 授权** : 容器启动后,需要执行授权命令,允许外部连接(因为容器是新的): ```sql 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 密码生成 : ```bash docker exec -it es /bin/bash ./bin/elasticsearch-setup-passwords interactive ``` 验证: 账号:nacos 密码:nacos 账号:elastic 密码:zw200495 账号:elastic 密码:zw200495 --- **企业级项目导航**:⬅️ [[03-实操 项目启动|03-实操 项目启动]] | 04-docker-compose一键启动环境 | ➡️ [[01-准备项目启动条件|01-准备项目启动条件]]