version: "2"
services: 
  bookmark-mysql:
    image: mysql:8.0.16
    container_name: bookmark-mysql
    ports: 
      - 3307:3306
    networks: 
      - bookmark
    volumes: 
      - ./mysql/data:/var/lib/mysql
      - ./mysql/temp:/var/lib/mysql-files
      - ./mysql/my.cnf:/etc/mysql/my.cnf
      - /etc/localtime:/etc/localtime
      - ./timezone:/etc/timezone
    environment: 
      - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_DATABASE=bookmark
  bookmark-redis:
    image: redis:3.2.10
    container_name: bookmark-redis
    volumes: 
      - /etc/localtime:/etc/localtime
      - ./timezone:/etc/timezone
    networks: 
      - bookmark
    # redis未设置密码，如端口暴露可能会被攻击
    ports:
     - 6380:6379
  bookmark-es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
    container_name: bookmark-es
    volumes: 
      - /etc/localtime:/etc/localtime
      - ./timezone:/etc/timezone
      - ./es/data:/usr/share/elasticsearch/data
      - ./es/ik:/usr/share/elasticsearch/plugins/ik
      - ./es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
      - 9300:9300
    networks: 
      - bookmark
  bookmark-front:
    image: nginx
    container_name: bookmark-front
    depends_on:
      - bookmark-service
    networks: 
      - bookmark
    volumes: 
      - /etc/localtime:/etc/localtime
      - ./timezone:/etc/timezone
      - ../front/build:/opt/dist
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/log:/var/log/nginx
    ports: 
      - 8083:8080
  bookmark-service:
    image: registry.cn-hangzhou.aliyuncs.com/fleyx/node-java-env:v2
    container_name: bookmark-service
    depends_on: 
      - bookmark-mysql
      - bookmark-redis
      - bookmark-es
    networks: 
      - bookmark
    volumes: 
      - /etc/localtime:/etc/localtime
      - ./timezone:/etc/timezone
      - ../bookMarkService/web/target/bookmark-web-1.0-SNAPSHOT.jar:/opt/app/service.jar
    working_dir: /opt/app
    command: 
      - /bin/bash
      - -c
      - |
        sleep 20 && \
        ls -l && \
        java -jar -DisDev=false \
        -DjwtSecret=${JWT_SECRET} \
        -Dmybatis.configuration.log-impl=org.apache.ibatis.logging.nologging.NoLoggingImpl \
        -Dspring.mail.host=${SMTP_HOST} \
        -Dspring.mail.username=${SMTP_USERNAME} \
        -Dspring.mail.password=${SMTP_PASSWORD} \
        -Dspring.mail.port=${SMTP_PORT} \
        -Dspring.datasource.druid.password=${MYSQL_PASSWORD} \
        -Dspring.datasource.druid.url=jdbc:mysql://bookmark-mysql:3306/bookmark?useUnicode=true\&characterEncoding=utf-8\&useSSL=false\&useJDBCCompliantTimezoneShift=true\&useLegacyDatetimeCode=false\&serverTimezone=UTC \
        -Dspring.redis.host=bookmark-redis \
        -Des.host=bookmark-es \
        service.jar
networks: 
  bookmark:
