docker-compose.yml
services:
redis:
image: redis:7.0-alpine
container_name: redis
volumes:
- redis_data:/data
command: redis-server --requirepass ${SPRING_REDIS_PASSWORD} --protected-mode no
restart: unless-stopped
networks:
- test_network
mysql:
build: ./mysql
container_name: mysql
ports:
- "3306:3306"
command: --skip-name-resolve --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: db_test
MYSQL_ROOT_PASSWORD: ${SPRING_DATASOURCE_PASSWORD}
MYSQL_USER: test_user
MYSQL_PASSWORD: ${SPRING_DATASOURCE_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
restart: unless-stopped
networks:
- test_network
back-server:
build:
context: ./back-server
dockerfile: Dockerfile
container_name: back-server
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/db_test?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=test_user
- SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
- SPRING_REDIS_HOST=redis
- SPRING_REDIS_PORT=6379
- SPRING_REDIS_PASSWORD=${SPRING_REDIS_PASSWORD}
- SPRING_PROFILES_ACTIVE=test
- TZ=Asia/Shanghai
- JAVA_OPTS=-Xms1024m -Xmx1024m -XX:+UseG1GC -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Duser.timezone=Asia/Shanghai
depends_on:
- mysql
- redis
restart: unless-stopped
networks:
- test_network
ports:
- "8080:8080"
volumes:
- ./back-server/logs:/app/logs
- ./back-server/files:/app/files
web-server:
image: nginx:1.25-alpine
container_name: web-server
ports:
- "80:80"
volumes:
- ./web-server/conf.d:/etc/nginx/conf.d
- ./web-server/logs:/var/log/nginx
- ./web-server/dist:/usr/share/nginx/html
depends_on:
- back-server
restart: unless-stopped
networks:
- test_network
networks:
test_network:
driver: bridge
name: test_network
volumes:
mysql_data:
redis_data:
备注:
docker-compose.yml 所在目录下创建 .env 文件,写入读取的密码
.env 文件:
SPRING_DATASOURCE_PASSWORD=XXXXXXX
SPRING_REDIS_PASSWORD=XXXXXXX