#       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: .
  # specialized command to run broccoli
  # since it depends on files from the shared volume, it can't be run as part of the Dockerfile build :(
  # and --no-bin-links necessary when Virtualbox is used since shared mount can't handle symlinks
  command: >
    sh -c '
    if [ ! -e Allura/allura/public/nf/js/build/transpiled.js ]; then
      npm install --no-bin-links --loglevel http &&
      npm run build;
    fi;
    gunicorn --paste Allura/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:
  image: solr:5.3.1
  ports:
    - "8983:8983"
  volumes:
    - solr_config/allura:/opt/solr/server/solr/allura
    - /allura-data/solr:/opt/solr/server/solr/allura/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
