version: '3.5'

services:
  cmdb-db:
    image: registry.cn-qingdao.aliyuncs.com/pycook/cmdb-db:1.0
    container_name: cmdb-db
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_DATABASE: 'cmdb'
      MYSQL_USER: 'cmdb'
      MYSQL_PASSWORD: '123456'
    volumes:
      - db-data:/var/lib/mysql
      - ./docs/cmdb.sql:/docker-entrypoint-initdb.d/cmdb.sql
    networks:
      new:
        aliases:
          - mysql

  cmdb-cache:
    image: registry.cn-qingdao.aliyuncs.com/pycook/cmdb-cache:1.0
    container_name: cmdb-cache
    networks:
      new:
        aliases:
          - redis

  cmdb-search:
    image: registry.cn-qingdao.aliyuncs.com/pycook/cmdb-search:1.2
#    build:
#      context: .
#      target: cmdb-search
    container_name: cmdb-search
    environment:
      - discovery.type=single-node
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      new:
        aliases:
          - cmdb-search

  cmdb-api:
    image: registry.cn-qingdao.aliyuncs.com/pycook/cmdb-api:2.0
#    build:
#      context: .
#      target: cmdb-api
    container_name: cmdb-api
    environment:
      TZ: Asia/Shanghai
    command:
      - /bin/sh
      - -c
      - |
        sed -i "s#USE_ES = False#USE_ES = True#g" settings.py
        sed -i "s#USE_ACL = False#USE_ACL = True#g" settings.py
        sed -i "s#ES_HOST = '127.0.0.1'#ES_HOST = 'cmdb-search'#g" settings.py
        sleep 20
        gunicorn --workers=3 autoapp:app -b 0.0.0.0:5000 -D
        flask init-cache
        flask init-acl
        celery worker -A celery_worker.celery -E -Q cmdb_async --concurrency=1
    depends_on:
      - cmdb-db
      - cmdb-cache
      - cmdb-search
    networks:
      new:
        aliases:
          - cmdb-api

  cmdb-ui:
    image: registry.cn-qingdao.aliyuncs.com/pycook/cmdb-ui:2.0
#    build:
#      context: .
#      target: cmdb-ui
    container_name: cmdb-ui
    depends_on:
      - cmdb-api
    environment:
      TZ: Asia/Shanghai
      CMDB_API_HOST: cmdb-api:5000
      NGINX_PORT: 80
    volumes:
      - ./docs/nginx.cmdb.conf.example:/etc/nginx/conf.d/nginx.cmdb.conf.example
    command:
      - /bin/sh
      - -c
      - |
        envsubst '$$CMDB_API_HOST  $$NGINX_PORT' < /etc/nginx/conf.d/nginx.cmdb.conf.example > /etc/nginx/conf.d/cmdb.conf
        nginx -g  'daemon off;'
    networks:
      - new
    ports:
      - "8000:80"

volumes:
  db-data:
  esdata:

networks:
  new: