group-buying/docs/dev-ops/docker-compose-app.yml

135 lines
3.2 KiB
YAML
Raw Normal View History

2025-06-19 20:34:58 +08:00
version: '3.8'
networks:
my-network:
driver: bridge
2025-06-19 20:34:58 +08:00
services:
# 1. 前端
group-buy-market-front:
image: nginx:alpine
container_name: group-buy-market-front
restart: always
ports:
- '80:80'
- '443:443'
volumes:
- ./nginx/html:/usr/share/nginx/html
privileged: true
networks:
- my-network
# 2. MySQL
mysql:
image: mysql:8.0
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
ports:
2025-07-08 18:08:38 +08:00
- '13306:3306'
volumes:
- ./mysql/my.cnf:/etc/mysql/conf.d/mysql.cnf:ro
- ./mysql/sql:/docker-entrypoint-initdb.d
healthcheck:
test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost']
interval: 5s
timeout: 10s
retries: 10
start_period: 15s
networks:
- my-network
# 3. Redis
redis:
image: redis:6.2
container_name: redis
restart: always
hostname: redis
ports:
2025-07-08 18:08:38 +08:00
- '16379:6379'
volumes:
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 10s
timeout: 5s
retries: 3
networks:
- my-network
# 4. Java 后端
2025-06-19 20:34:58 +08:00
group-buying-sys:
2025-07-08 16:27:21 +08:00
build:
2025-07-08 18:08:38 +08:00
context: ../.. # 从 docs/dev-ops 回到项目根
2025-07-08 16:27:21 +08:00
dockerfile: group-buying-sys-app/Dockerfile
image: smile/group-buying-sys:latest
2025-06-19 20:34:58 +08:00
container_name: group-buying-sys
restart: on-failure
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
2025-06-19 20:34:58 +08:00
ports:
- '8091:8091'
2025-06-19 20:34:58 +08:00
environment:
- TZ=PRC
- SERVER_PORT=8091
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=123456
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/big_market?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
- SPRING_HIKARI_POOL_NAME=Retail_HikariCP
- REDIS_SDK_CONFIG_HOST=redis
- REDIS_SDK_CONFIG_PORT=6379
2025-06-19 20:34:58 +08:00
volumes:
- ./log:/data/log
logging:
driver: json-file
2025-06-19 20:34:58 +08:00
options:
max-size: '10m'
max-file: '3'
2025-06-19 20:34:58 +08:00
networks:
- my-network
2025-07-08 18:08:38 +08:00
# 5. phpMyAdmin只有在 webui profile 下才启动)
phpmyadmin:
image: phpmyadmin:5.2.1
container_name: phpmyadmin
hostname: phpmyadmin
depends_on:
mysql:
condition: service_healthy
ports:
- '8899:80'
environment:
- PMA_HOST=mysql
- PMA_PORT=3306
- MYSQL_ROOT_PASSWORD=123456
networks:
- my-network
2025-07-08 18:08:38 +08:00
profiles: ["webui"]
2025-07-08 18:08:38 +08:00
# 6. Redis Commander只有在 webui profile 下才启动)
redis-admin:
image: spryker/redis-commander:0.8.0
container_name: redis-admin
hostname: redis-commander
restart: always
depends_on:
redis:
condition: service_healthy
ports:
- '8081:8081'
environment:
- REDIS_HOSTS=local:redis:6379
- HTTP_USER=admin
- HTTP_PASSWORD=admin
networks:
- my-network
2025-07-08 18:08:38 +08:00
profiles: ["webui"]