docker compose方式部署文档完整示例

0 阅读1分钟

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