version: '2.1'

services:
  postgres:
    image: postgres:11.5-alpine
    container_name: ${COMPOSE_PROJECT_NAME}-postgres
    volumes:
      - ${DATA_PATH}/postgres/data:/var/lib/postgresql/data
      - ${DATA_PATH}/keycloak/data:/docker-entrypoint-initdb.d
    environment:
      - POSTGRES_DB=${COMPOSE_PROJECT_NAME}-keycloak
      - POSTGRES_USER=${KEYCLOAK_POSTGRES_USER}
      - POSTGRES_PASSWORD=${KEYCLOAK_POSTGRES_PASSWORD}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - resource

  keycloak:
    image: jboss/keycloak:6.0.1
    container_name: ${COMPOSE_PROJECT_NAME}-sso
   # command: "-Dkeycloak.migration.action=import -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=/tmp/realm.json -Dkeycloak.migration.strategy=OVERWRITE_EXISTING "
    ports:
      - "8181:8080"
    depends_on:
      rabbitmq:
        condition: service_healthy
      postgres:
        condition: service_healthy
    volumes:
      - ${DATA_PATH}/keycloak/realm.json:/tmp/realm.json
    environment:
      - DB_VENDOR=postgres
      - DB_ADDR=${COMPOSE_PROJECT_NAME}-postgres
      - DB_DATABASE=${COMPOSE_PROJECT_NAME}-keycloak
      - DB_USER=${KEYCLOAK_POSTGRES_USER}
      - DB_PASSWORD=${KEYCLOAK_POSTGRES_PASSWORD}
      - KEYCLOAK_USER=${KEYCLOAK_ADMIN_USER}
      - KEYCLOAK_PASSWORD=${KEYCLOAK_ADMIN_PASSWORD}
      - KEYCLOAK_IMPORT=/tmp/realm.json
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080"]
      interval: 5s
      timeout: 10s
      retries: 100
    networks:
      - resource

networks:
  resource:
    driver: bridge
