# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

version: "3.5"
services:
  kdc:
    build:
      context: docker-image/docker-krb5
      dockerfile: Dockerfile-krb5
      args:
        buildno: 1
    hostname: kdc
    networks:
      - ozone
    volumes:
      - ../..:/opt/hadoop
  kms:
    image: apache/hadoop:${HADOOP_VERSION}
    networks:
      - ozone
    ports:
      - 9600:9600
    env_file:
      - ./docker-config
    command: ["hadoop", "kms"]
  datanode:
    image: apache/ozone-runner:${OZONE_RUNNER_VERSION}
    networks:
      - ozone
    volumes:
      - ../..:/opt/hadoop
    ports:
      - 9864
    command: ["/opt/hadoop/bin/ozone","datanode"]
    env_file:
      - docker-config
  om:
    image: apache/ozone-runner:${OZONE_RUNNER_VERSION}
    hostname: om
    networks:
      - ozone
    volumes:
      - ../..:/opt/hadoop
    ports:
      - 9874:9874
    environment:
      ENSURE_OM_INITIALIZED: /data/metadata/om/current/VERSION
    env_file:
      - docker-config
    command: ["/opt/hadoop/bin/ozone","om"]
  s3g:
    image: apache/ozone-runner:${OZONE_RUNNER_VERSION}
    hostname: s3g
    networks:
      - ozone
    volumes:
      - ../..:/opt/hadoop
    ports:
      - 9878:9878
    env_file:
      - ./docker-config
    command: ["/opt/hadoop/bin/ozone","s3g"]
  scm:
    image: apache/ozone-runner:${OZONE_RUNNER_VERSION}
    hostname: scm
    networks:
      - ozone
    volumes:
      - ../..:/opt/hadoop
    ports:
      - 9876:9876
    env_file:
      - docker-config
    environment:
      ENSURE_SCM_INITIALIZED: /data/metadata/scm/current/VERSION
    command: ["/opt/hadoop/bin/ozone","scm"]
  rm:
    image: apache/hadoop:${HADOOP_VERSION}
    hostname: rm
    networks:
      - ozone
    volumes:
      - ../..:/opt/ozone
    ports:
      - 8088:8088
    env_file:
      - ./docker-config
    environment:
      HADOOP_CLASSPATH: /opt/ozone/share/ozone/lib/hadoop-ozone-filesystem-lib-current-@project.version@.jar
    command: ["yarn", "resourcemanager"]
  nm:
    image: apache/hadoop:${HADOOP_VERSION}
    hostname: nm
    networks:
      - ozone
    volumes:
      - ../..:/opt/ozone
    env_file:
      - ./docker-config
    environment:
      HADOOP_CLASSPATH: /opt/ozone/share/ozone/lib/hadoop-ozone-filesystem-lib-current-@project.version@.jar
      WAIT_FOR: rm:8088
    command: ["yarn","nodemanager"]
  jhs:
    image: apache/hadoop:${HADOOP_VERSION}
    container_name: jhs
    hostname: jhs
    networks:
      - ozone
    volumes:
      - ../..:/opt/ozone
    ports:
      - 8188:8188
    env_file:
      - ./docker-config
    environment:
      HADOOP_CLASSPATH: /opt/ozone/share/ozone/lib/hadoop-ozone-filesystem-lib-current-@project.version@.jar
      WAIT_FOR: rm:8088
    command: ["yarn","timelineserver"]
networks:
  ozone:
    name: ozone
