version: '3.7' services: skykronoapi: build: context: . dockerfile: docker/nodejs/Dockerfile image: sky-krono-docker container_name: sky-krono-api hostname: sky-krono-api restart: unless-stopped ports: - '3000:3000' networks: - elk - app environment: PORT: 3000 DATABASE_HOST: ${DATABASE_HOST} DATABASE_PORT: ${DATABASE_PORT} DATABASE_USERNAME: ${DATABASE_USERNAME} DATABASE_PASSWORD: ${DATABASE_PASSWORD} DATABASE_NAME: ${DATABASE_NAME} JWT_TOKEN: ${JWT_TOKEN} EMAIL_HOST: ${EMAIL_HOST} # MAIL PROPERTIES EMAIL_PORT: ${EMAIL_PORT} EMAIL_USERNAME: ${EMAIL_USERNAME} EMAIL_PASSWORD: ${EMAIL_PASSWORD} PUBLIC_KEY: ${PUBLIC_KEY} # WEB PUSH PROPERTIES PRIVATE_KEY: ${PRIVATE_KEY} EMAIL_WEB_PUSH: ${EMAIL_WEB_PUSH} RP_ID: ${RP_ID} # WEB AUTH PROPERTIES RP_ID_ARRAY: ${RP_ID_ARRAY} ORIGIN: ${ORIGIN} LOGO_APP: ${LOGO_APP} LOGO_ICON: ${LOGO_ICON} URL_WEB: ${URL_WEB} TZ: ${TZ} # TIME ZONE PROPERTIES CACHE_MAX_ITEMS: ${CACHE_MAX_ITEMS} # CACHE PROPERTIES CACHE_TTL: ${CACHE_TTL} ENABLED_MYSQL_CACHE: ${ENABLED_MYSQL_CACHE} AWS_REGION: ${AWS_REGION} # AWS S3 PROPERTIES AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} AWS_BUCKET: ${AWS_BUCKET} DATE_PATTERN: ${DATE_PATTERN} # LOGGER PROPERTIES APP_NAME: ${APP_NAME} MAX_SIZE: ${MAX_SIZE} MAX_DAYS: ${MAX_DAYS} LOG_FOLDER: ${LOG_FOLDER} TIMESTAMP_FORMAT: ${TIMESTAMP_FORMAT} LOGSTASH_ENABLED: ${LOGSTASH_ENABLED} # LOGSTASH PROPERTIES LOGSTASH_PORT: ${LOGSTASH_PORT} LOGSTASH_NODE_NAME: ${LOGSTASH_NODE_NAME} LOGSTASH_HOST: ${LOGSTASH_HOST} nginx: build: context: docker/nginx # dockerfile: docker/nginx container_name: nginx hostname: nginx ports: - '80:80' depends_on: - skykronoapi networks: - elk - app prometheus: build: context: docker/prometheus/ volumes: - ./docker/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' ports: - '9090:9090' grafana: build: context: docker/grafana/ container_name: monitoring_grafana restart: unless-stopped links: - prometheus:prometheus volumes: - ./data/grafana:/var/lib/grafana - ./docker/grafana/config/datasource.yaml:/etc/grafana/provisioning/datasources/datasource.yml environment: - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-} - GF_SERVER_HTTP_PORT=2525 ports: - '2525:2525' # The 'setup' service runs a one-off script which initializes the # 'logstash_internal' and 'kibana_system' users inside Elasticsearch with the # values of the passwords defined in the '.env' file. # # This task is only performed during the *initial* startup of the stack. On all # subsequent runs, the service simply returns immediately, without performing # any modification to existing users. setup: build: context: docker/setup/ args: ELASTIC_VERSION: ${ELASTIC_VERSION} init: true volumes: - setup:/state:Z environment: ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-} LOGSTASH_INTERNAL_PASSWORD: ${LOGSTASH_INTERNAL_PASSWORD:-} KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-} networks: - elk - app depends_on: - elasticsearch elasticsearch: build: context: docker/elasticsearch/ args: ELASTIC_VERSION: ${ELASTIC_VERSION} volumes: - ./docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,z - elasticsearch:/usr/share/elasticsearch/data:z ports: - '9200:9200' - '9300:9300' environment: ES_JAVA_OPTS: -Xms512m -Xmx512m # Bootstrap password. # Used to initialize the keystore during the initial startup of # Elasticsearch. Ignored on subsequent runs. ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-} # Use single node discovery in order to disable production mode and avoid bootstrap checks. # see: https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html discovery.type: single-node networks: - elk - app logstash: build: context: docker/logstash/ args: ELASTIC_VERSION: ${ELASTIC_VERSION} volumes: - ./docker/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro,Z - ./docker/logstash/pipeline:/usr/share/logstash/pipeline:ro,Z ports: - '5044:5044' - '50000:50000/tcp' - '50000:50000/udp' - '9600:9600' environment: LS_JAVA_OPTS: -Xms256m -Xmx256m LOGSTASH_INTERNAL_PASSWORD: ${LOGSTASH_INTERNAL_PASSWORD:-} networks: - elk - app depends_on: - elasticsearch kibana: build: context: docker/kibana/ args: ELASTIC_VERSION: ${ELASTIC_VERSION} volumes: - ./docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro,Z ports: - '5601:5601' environment: KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-} networks: - elk - app depends_on: - elasticsearch networks: elk: driver: bridge app: external: true volumes: setup: elasticsearch: