#       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: "2.1"
services:
  web:
    build: .
    environment: &env
      # PATH=/allura-data/virtualenv/bin:$PATH doesn't work; see https://github.com/docker/compose/issues/650
      - PATH=/allura-data/virtualenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    ports:
      - "8088:8088"
    volumes: &volumes
      - .:/allura  # Allura source code from local host
      - ${LOCAL_SHARED_DATA_ROOT:-./allura-data}:/allura-data  # for virtualenv, scm repos, etc
      - ${LOCAL_SHARED_DATA_ROOT:-./allura-data}/root/home:/root  # for persistent home dir, mainly for pudb
    links:
      - mongo
      - solr

  taskd:
    image: allura_web
    working_dir: /allura/Allura
    environment: *env
    command: paster taskd docker-dev.ini
    volumes: *volumes
    links:
      - mongo
      - solr
      - outmail

  solr:
    image: solr:6-alpine  # alpine is a very small distro base
    ports:
      - "8983:8983"
    volumes:
      - ./solr_config/allura:/opt/solr/server/solr/allura
      - ${LOCAL_SHARED_DATA_ROOT:-./allura-data}/solr:/opt/solr/server/solr/allura/data

  mongo:
    image: mongo:4.2
    ports:
      - "27017:27017"
    volumes:
      - ${LOCAL_SHARED_DATA_ROOT:-./allura-data}/mongo:/data/db
    command: mongod --storageEngine wiredTiger

  outmail:
    image: allura_web
    environment: *env
    volumes_from:
      - web
    command: python -u -m smtpd -n -c alluratest.smtp_debug.BetterDebuggingServer 0.0.0.0:8826
    expose:
      - "8826"

  inmail:
    image: allura_web
    working_dir: /allura/Allura
    environment: *env
    volumes: *volumes
    command: paster smtp_server docker-dev.ini
    ports:
      - "8825:8825"
    links:
      - mongo

  http:
    build: scm_config/git-http/
    ports:
      - "8080:80"
    volumes: *volumes
    links:
      - mongo
      - web
