docker-compose:
yaml
services:
mysql:
image: mysql:8.4.0
container_name: mysql
environment:
# 时区上海
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: ${PASSWORD:-123456}
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
ports:
- "3306:3306"
volumes:
- ${home:-/home/docker/config}/mysql/data/:/var/lib/mysql/
- ${home:-/home/docker/config}/mysql/conf/:/etc/mysql/conf.d/
networks:
- app-network
privileged: true
# 持续重启(手动关闭不重启)
restart: unless-stopped
redis:
image: redis:7.4.7
container_name: redis
command: >
redis-server
--maxmemory 128mb
--maxmemory-policy allkeys-lru
--save 900 1
--save 300 10
--save 60 10000
--notify-keyspace-events Ex
--rdbcompression yes
--appendonly yes
--appendfilename "appendonly.aof"
--appendfsync everysec
--requirepass ${PASSWORD:-123456}
ports:
- "6379:6379"
volumes:
- ${home:-/home/docker/config}/redis/conf/redis.conf:/etc/redis/redis.conf
- ${home:-/home/docker/config}/redis/data:/data
networks:
- app-network
restart: unless-stopped
nacos:
image: nacos/nacos-server:v3.1.0
container_name: nacos
restart: unless-stopped
environment:
- MODE=standalone
- NACOS_AUTH_TOKEN=tGXyHX2bYj1pRtvfs4ul94ds1wK9WNwqU/xC1ie9tQY=
- NACOS_AUTH_IDENTITY_KEY=nacos.cluster.id
- NACOS_AUTH_IDENTITY_VALUE=7x9Lm2pQr8sT4vW6yZ1aB3cD5eF7gH9j
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=${PASSWORD:-123456}
- MYSQL_DATABASE_NUM=1
ports:
- "8080:8080"
- "8848:8848"
- "9848:9848"
- "9849:9849"
volumes:
# 日志目录 注意集群模式下 日志目录不能一致 需要区分例如 nacos1 nacos2
- ${home:-/home/docker/config}/nacos/logs/:/home/nacos/logs/
depends_on:
- mysql
networks:
- app-network
networks:
app-network:
driver: bridge
启动命令:
home为挂载路径
bash
PASSWORD=123456 home=/Users/admin/java/docker docker-compose up -d