# start django command
# local domain
#   saas-local.anthembj.com
#   ceshi-local.anthembj.com
# docker-compose run --entrypoint '/backend/docker_start.sh' -p 8000:8000 docker_django

version: "3"
services:
  dvadmin-ui:
    container_name: dvadmin-ui
    build:
      context: ./
      dockerfile: ./docker_env/vue-ui/Dockerfile
    environment:
      TZ: Asia/Shanghai
    volumes:
      - "./dvadmin-ui:/dvadmin-ui"
    command:
      - /bin/bash
      - -c
      - |
        cd /dvadmin-ui
        npm install --registry=https://registry.npm.taobao.org
        rm -rf /dvadmin-ui/dist
        npm run build:prod


  dvadmin-doc:
    container_name: dvadmin-doc
    build:
      context: ./
      dockerfile: ./docker_env/vue-doc/Dockerfile
    environment:
      TZ: Asia/Shanghai
    volumes:
      - "./dvadmin-doc:/dvadmin-doc"
    command:
      - /bin/bash
      - -c
      - |
        cd /dvadmin-doc
        npm install --registry=https://registry.npm.taobao.org
        rm -rf /dvadmin-doc/dist
        npm run docs:build


  dvadmin-redis:
    image: redis:latest
    container_name: dvadmin-redis
    ports:
      - "6380:6379"
    expose:
      - "6379"
    volumes:
      - ./docker_env/redis/data:/data
      - ./docker_env/redis/redis.conf:/etc/redis/redis.conf
    command: redis-server /etc/redis/redis.conf
    networks:
      - dvadmin_net


  dvadmin-mysql:
    image: mysql:5.7
    container_name: dvadmin-mysql
    #使用该参数，container内的root拥有真正的root权限，否则，container内的root只是外部的一个普通用户权限
    #设置为true，不然数据卷可能挂载不了，启动不起
    privileged: true
    restart: always
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "q1w2e3r4T%Y^U&MYSQL"
      MYSQL_DATABASE: "django-vue-admin"
      TZ: Asia/Shanghai
    command:
      --wait_timeout=31536000
      --interactive_timeout=31536000
      --max_connections=1000
      --default-authentication-plugin=mysql_native_password
    volumes:
      #映射mysql的数据目录到宿主机，保存数据
      - "./docker_env/mysql/data:/var/lib/mysql"
      #根据宿主机下的配置文件创建容器
      - "./docker_env/mysql/conf.d:/etc/mysql/conf.d"
      - "./docker_env/mysql/logs:/logs"
    networks:
      - dvadmin_net

  dvadmin-django:
    build:
      context: .
      dockerfile: ./docker_env/django/Dockerfile
    # image: django:2.2
    container_name: dvadmin-django
    working_dir: /dvadmin-backend
    # command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && python manage.py runserver"
    # command: bash
    depends_on:
      - dvadmin-mysql
      - dvadmin-redis
    environment:
      - REDIS_HOST=dvadmin-redis
      - DATABASE_HOST=dvadmin-mysql
    volumes:
      - ./dvadmin-backend:/dvadmin-backend
      - ./logs/log:/var/log
    ports:
      - "8000:8000"
    expose:
      - "8000"
    restart: always
    networks:
      - dvadmin_net


#  docker-celery:
#    build:
#      context: .
#      dockerfile: ./docker_env/celery/Dockerfile
#    # image: celery:1.0
#    container_name: docker-celery
#    working_dir: /dvadmin-backend
#    # command: bash
#    depends_on:
#      - dvadmin-mysql
#      - dvadmin-redis
#      - dvadmin-django
#    volumes:
#      - ./dvadmin-backend:/dvadmin-backend
#      - ./logs/log:/var/log
#    ports:
#      - "5672:5672"
#    expose:
#      - "5672"
#    restart: always
#    networks:
#      - dvadmin_net


  dvadmin-nginx:
    image: nginx:latest
    container_name: dvadmin-nginx
    # build: ./docker_env/nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    expose:
      - "80"
      - "443"
    volumes:
      - ./docker_env/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker_env/nginx/sites-enabled:/etc/nginx/sites-enabled
      - ./docker_env/nginx/keys:/nginx/keys
      - ./dvadmin-backend:/dvadmin-backend
      - ./dvadmin-doc:/dvadmin-doc
      - ./dvadmin-ui:/dvadmin-ui
      - ./logs/nginx:/var/log/nginx
    depends_on:
      - dvadmin-django
    networks:
      - dvadmin_net

networks:
  dvadmin_net:
    driver: bridge
