# docker-compose for ONAP portal containers: database, microservice, portal apps.
# Relies on .env file, which CANNOT be specified via command-line option
# Works in multiple environments; does not pull from a Nexus registry.
# Exposes the portal apps docker (but not DB nor WMS dockers) on the host network.
# Images must be pulled from ONAP Nexus registry after logging in like this:
# docker login -u USER -p PASS nexus3.onap.org:10001
# Uses healthcheck feature added in docker-compose v2.1

version: '2.1'

services:

  cli:
    image: ${CLI_IMG_NAME}:${PORTAL_TAG}
    environment:
      OPEN_CLI_MODE: 'daemon'
    ports:
      - 8080:80
      - 9090:8080
    logging:
      driver: json-file

  # Config files may use hostname "portal-db"
  portal-db:
    image: ${DB_IMG_NAME}:${PORTAL_TAG}
    environment:
      MYSQL_ROOT_PASSWORD: 'Aa123456'
    expose:
      - 3306
    volumes:
      # Just specify a path and let the Engine create a volume
      - /var/lib/mysql
      # Inject the onboarding script at start time
      - ./Apps_Users_OnBoarding_Script.sql:/docker-entrypoint-initdb.d/zzz_apps_users_onboarding.sql
    logging:
      driver: json-file
    healthcheck:
      test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
      timeout: 10s
      retries: 30
      
  # Config files may use hostname "portal-cassandra"
  portal-cassandra:
    image: ${CDR_IMG_NAME}:${PORTAL_TAG}
    environment:
      - CASSUSER=root
      - CASSPASS=Aa123456
      - JVM_OPTS=-Xmx2536m -Xms2536m
    expose:
      - 7000
      - 7001
      - 7199
      - 9042
      - 9160
    ports:
      - 7000:7000
      - 7001:7001
      - 7199:7199
      - 9042:9042
      - 9160:9160
    volumes:
      - ./portal.cql:/docker-entrypoint-initdb.d/zzz_portal.cql
      - ./portalsdk.cql:/docker-entrypoint-initdb.d/zzz_portalsdk.cql
    links:
      - portal-db      
    depends_on:
      portal-db:
        condition: service_healthy
        
  # Config files may use hostname "portal-zk"
  portal-zk:
    image: ${ZK_IMG_NAME}:${PORTAL_TAG}
    expose:
      - 2181
    ports:
      - 2181:2181           

  # The app config file uses the docker name above
  portal-wms:
    image: ${WMS_IMG_NAME}:${PORTAL_TAG}
    expose:
      - 8082
    links:
      - portal-db
    depends_on:
      portal-db:
        condition: service_healthy
    volumes:
      - ${PROPS_DIR}/ONAPWIDGETMS/application.properties:/application.properties
      - ${PROPS_DIR}/ONAPWIDGETMS/application.yml:/application.yml
    command:
      - /start-wms.sh
    logging:
      driver: json-file

  portal-app:
    image: ${EP_IMG_NAME}:${PORTAL_TAG}
    ports:
      - 8989:8080
      - 8010:8009
      - 8006:8005
      - 8443:8443
    links:
      - portal-db
      - portal-wms
      - portal-zk
      - portal-cassandra
    depends_on:
      portal-db:
        condition: service_healthy
      portal-wms:
        condition: service_started
    volumes:
      - ${PROPS_DIR}/ONAPPORTAL/system.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/conf/system.properties
      - ${PROPS_DIR}/ONAPPORTAL/fusion.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/fusion/conf/fusion.properties
      - ${PROPS_DIR}/ONAPPORTAL/portal.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/portal.properties
      - ${PROPS_DIR}/ONAPPORTAL/music.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/music.properties
      - ${PROPS_DIR}/ONAPPORTAL/openid-connect.properties:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/openid-connect.properties
      - ${PROPS_DIR}/ONAPPORTAL/logback.xml:${WEBAPPS_DIR}/ONAPPORTAL/WEB-INF/classes/logback.xml
      - ./${TOMCAT_TRUST}:${TOMCAT_DIR}/${TOMCAT_TRUST}
      - ./${TOMCAT_KEY}:${TOMCAT_DIR}/${TOMCAT_KEY}
      - ${LOGS_DIR}:${TOMCAT_DIR}/logs
    command:
      - /start-apache-tomcat.sh
      # see comments in .env file
      - -i
      - $EXTRA_HOST_IP
      - -n
      - $EXTRA_HOST_NAME
    logging:
      driver: json-file
    environment:
      - CATALINA_OPTS=-Xmx1536m -Xms1536m
      - javax.net.ssl.keyStore=${TOMCAT_DIR}/${TOMCAT_TRUST} 
      - javax.net.ssl.keyStorePassword=${CERT_PWD}
      - javax.net.ssl.trustStore=${TOMCAT_DIR}/${TOMCAT_TRUST}
      - javax.net.ssl.trustStorePassword=${CERT_PWD}
  portal-sdk:
    image: ${SDK_IMG_NAME}:${PORTAL_TAG}
    ports:
      - 8990:8080
    links:
      - portal-db
      - portal-wms
      - portal-zk
      - portal-cassandra
    depends_on:
      portal-db:
        condition: service_healthy
    volumes:
      - ${PROPS_DIR}/ONAPPORTALSDK/fusion.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/fusion/conf/fusion.properties
      - ${PROPS_DIR}/ONAPPORTALSDK/system.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/conf/system.properties
      - ${PROPS_DIR}/ONAPPORTALSDK/portal.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/portal.properties
      - ${PROPS_DIR}/ONAPPORTALSDK/music.properties:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/music.properties
      - ${PROPS_DIR}/ONAPPORTALSDK/logback.xml:${WEBAPPS_DIR}/ONAPPORTALSDK/WEB-INF/classes/logback.xml
      - ${LOGS_DIR}:${TOMCAT_DIR}/logs
    command:
      - /start-apache-tomcat.sh
    logging:
      driver: json-file
    environment:
      - CATALINA_OPTS=-Xmx1536m -Xms1536m