#/**
# * Copyright 2007 The Apache Software Foundation
# *
# * 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.
# */
networks:
  testnetwork*:
    driver: bridge

zookeeper*:
  image: zookeeper:3.4.11
  await:
    strategy: org.apache.bookkeeper.tests.integration.utils.ZooKeeperAwaitStrategy
  aliases:
    - zookeeper
  beforeStop:
    - customBeforeStopAction:
        strategy: org.apache.bookkeeper.tests.integration.utils.LogToTargetDirStopAction
  networkMode: testnetwork*

bookkeeper1*:
  image: apachebookkeeper/bookkeeper-all-versions
  await:
    strategy: org.apache.bookkeeper.tests.integration.utils.NoopAwaitStrategy
  env: [BK_ZKCONNECTSTRING=zookeeper]
  beforeStop:
    - customBeforeStopAction:
        strategy: org.apache.bookkeeper.tests.integration.utils.BookKeeperLogsToTargetDirStopAction
  networkMode: testnetwork*

bookkeeper2*:
  image: apachebookkeeper/bookkeeper-all-versions
  await:
    strategy: org.apache.bookkeeper.tests.integration.utils.NoopAwaitStrategy
  env: [BK_ZKCONNECTSTRING=zookeeper]
  beforeStop:
    - customBeforeStopAction:
        strategy: org.apache.bookkeeper.tests.integration.utils.BookKeeperLogsToTargetDirStopAction
  networkMode: testnetwork*

bookkeeper3*:
  image: apachebookkeeper/bookkeeper-all-versions
  await:
    strategy: org.apache.bookkeeper.tests.integration.utils.NoopAwaitStrategy
  env: [BK_ZKCONNECTSTRING=zookeeper]
  beforeStop:
    - customBeforeStopAction:
        strategy: org.apache.bookkeeper.tests.integration.utils.BookKeeperLogsToTargetDirStopAction
  networkMode: testnetwork*

