version: '3'

services:
  db:
    image: postgres:10.19
    restart: always
    environment:
      POSTGRES_PASSWORD: f00d
      POSTGRES_USER: ofn
      POSTGRES_DB: open_food_network_dev
    ports:
      - 5432:5432
    volumes:
      - 'postgres:/var/lib/postgresql/data'
  redis:
    image: redis
  web:
    tty: true
    stdin_open: true
    build: .
    ports:
      - 3000:3000
    volumes:
      - .:/usr/src/app
      - gems:/bundles
      - ./config/database.yml:/usr/src/app/config/database.yml
    depends_on:
      - db
      - redis
      - webpack
    environment:
      OFN_DB_HOST: db
      OFN_REDIS_URL: redis://redis/
      OFN_REDIS_JOBS_URL: redis://redis
      WEBPACKER_DEV_SERVER_HOST: webpack
    command: >
      bash -c "wait-for-it -t 30 db:5432 &&
               rm -f tmp/pids/server.pid &&
               (bundle check || bundle install) &&
               bundle exec rake db:create &&
               yarn install &&
               bundle exec rails s -p 3000 -b '0.0.0.0'"
  webpack:
    build: .
    command: ./bin/webpack-dev-server
    volumes:
      - .:/usr/src/app
      - gems:/bundles
    ports:
      - '3035:3035'
    environment:
      NODE_ENV: development
      RAILS_ENV: development
      WEBPACKER_DEV_SERVER_HOST: 0.0.0.0
  worker:
    tty: true
    stdin_open: true
    build: .
    volumes:
      - .:/usr/src/app
      - gems:/bundles
      - ./config/database.yml:/usr/src/app/config/database.yml
    depends_on:
      - db
      - redis
    environment:
      OFN_DB_HOST: db
      OFN_REDIS_URL: redis://redis
      OFN_REDIS_JOBS_URL: redis://redis
    command: >
      bash -c "wait-for-it -t 30 db:5432 &&
               (bundle check || bundle install) &&
               bundle exec sidekiq -q mailers -q default"
volumes:
  gems:
  postgres:
