version: "3"

services:
  web:
    # Debug
    stdin_open: true
    command: /bin/bash 
    tty: true 
    build:
      context: ./
      dockerfile: Dockerfile.dev
      args:
        buildno: 1
    volumes:
     - ".:/var/www/"
    ports:
     - "4000:4000"
     - "35729:35729"
    links:
     - db
     - memcached
     #- spring
     #- selenium
     #- redis

  test:
    # Debug
    #stdin_open: true
    command: ["/bin/bash", "-c", "--", "while true; do sleep 100; done;"]
    build:
      context: ./
      dockerfile: Dockerfile.dev
      args:
        buildno: 1
    env_file:
      - .env.test
    ports:
      - 3005:3005 # Capybara listens here
    links:
      - db
      - selenium
    volumes:
      - ".:/var/www"
    # command: bin/spring server
    environment:
      TEST_APP_HOST: test
      TEST_APP_PORT: 3005
      SELENIUM_HOST: selenium
      RAILS_ENV: test
    networks:
      default:
        aliases:
          - test

  redis:
    image: 'redis:4.0-alpine'

  selenium:
    image: selenium/standalone-chrome-debug
    ports:
      - 5900:5900
      - 4444:4444

#  spring:
#    build:
#      context: ./
#      dockerfile: Dockerfile.dev
#      args:
#        buildno: 1
#    volumes:
#      - .:/var/www
#    command: spring server

    # This ensures that the pid namespace is shared between the host
    # and the container. It's not necessary to be able to run spring
    # commands, but it is necessary for "spring status" and "spring stop"
    # to work properly.
#    pid: host

  db:
    # Debug
    #command: bash 
    #tty: true
    command: mysqld_safe --skip-grant-tables
    image: mariadb:latest
    volumes:
     - "./db_data:/var/lib/mysql"
     - "./ext/mysql.conf.d:/etc/mysql/conf.d"
    environment:
     - MYSQL_DATABASE=ensl
     - MYSQL_USER=ensl
     - MYSQL_USERNAME=ensl
     - MYSQL_PASSWORD=ensl
     - MYSQL_ROOT_PASSWORD=ensl
     - MYSQL_ROOT_HOST=%

  memcached:
    image: memcached:latest
  #redis:
  #  image: redis