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
由于 Docker Compose 只能负责启动,一些手动授权操作仍然需要做一次:
-
MySQL 授权 : 容器启动后,需要执行授权命令,允许外部连接(因为容器是新的):
docker exec -it mysql bash mysql -u root -p (输入密码 root) use mysql; update user set host = '%' where user = 'root'; flush privileges; exit; exit -
Elasticsearch 密码生成 :
docker exec -it es /bin/bash ./bin/elasticsearch-setup-passwords interactive
验证:
账号:nacos 密码:nacos
账号:elastic 密码:zw200495
http://localhost:5601/app/home#/
账号:elastic 密码:zw200495
企业级项目导航:⬅️ 03-实操 项目启动 | 04-docker-compose一键启动环境 | ➡️ 01-准备项目启动条件
💬 评论