version: '3.4'

services:
  cmdb-db:
    image: mysql:5.7
    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: redis:latest
    container_name: cmdb-cache
    networks:
      new:
        aliases:
          - redis

  cmdb-api:
    build:
      context: .
      dockerfile: api/Dockerfile
    image: cmdb-api:0.1
    container_name: cmdb-api
    command:
      - /bin/bash
      - -c
      - |
        gunicorn --workers=3 autoapp:app -b 0.0.0.0:5000 -D
        flask init-cache
        celery worker -A celery_worker.celery -E -Q cmdb_async --concurrency=1
    depends_on:
      - cmdb-db
      - cmdb-cache
    networks:
      new:
        aliases:
          - cmdb-api

  cmdb-ui:
    build:
      context: ./ui
      dockerfile: Dockerfile
    image: cmdb-ui:0.1
    container_name: cmdb-ui
    depends_on: 
      - cmdb-api
    environment:
      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:

networks:
  new: