#       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.

web:
  build: .
  working_dir: /allura
  command: bash -c 'cd Allura && gunicorn --paste docker-dev.ini --reload'
  ports:
    - "8080:8080"
  volumes:
    - .:/allura
    # mount env to allow update and sharing with taskd container
    - /allura-data/env-docker/python:/usr/local/lib/python2.7
    - /allura-data/env-docker/bin:/usr/local/bin
    # mounting it separatelly to create git, svn, hg directories automatically
    - /allura-data/scm/git:/allura-data/scm/git
    - /allura-data/scm/hg:/allura-data/scm/hg
    - /allura-data/scm/svn:/allura-data/scm/svn
    - /allura-data/scm/snapshots:/allura-data/scm/snapshots
  links:
    - mongo
    - solr
    - outmail

taskd:
  image: allura_web
  working_dir: /allura/Allura
  command: paster taskd docker-dev.ini
  volumes_from:
    - web
  links:
    - mongo
    - solr
    - outmail

solr:
  build: solr_config
  working_dir: /solr/solr-4.2.1/example
  command: java -jar start.jar
  ports:
    - "8983:8983"
  volumes:
    - /allura-data/solr:/solr/solr-4.2.1/example/solr/collection1/data

mongo:
  image: mongo:2.6
  ports:
    - "27017:27017"
  volumes:
    - /allura-data/mongo:/data/db
  command: mongod --smallfiles

outmail:
  image: allura_web
  command: python -m smtpd -n -c DebuggingServer 0.0.0.0:8826
  expose:
    - "8826"

inmail:
  image: allura_web
  working_dir: /allura/Allura
  command: paster smtp_server docker-dev.ini
  volumes_from:
    - web
  ports:
    - "8825:8825"
  links:
    - mongo
