version: '2'
networks:
  lb_web:
    external: true
  back:
    driver: bridge
services:
  db:
    restart: always
    image: postgres:alpine
    networks:
    - back
    volumes:
    - ./data/postgres:/var/lib/postgresql/data
  redis:
    restart: always
    image: redis:alpine
    networks:
    - back
  web:
    image: nginx:alpine
    volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf
    volumes_from:
    - app
    depends_on:
    - app
    - streaming
    networks:
    - back
    - lb_web
    environment:
    - VIRTUAL_HOST
  app:
    restart: always
    image: gargron/mastodon:v1.4.7
    env_file: .env.production
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    depends_on:
    - db
    - redis
    volumes:
    - ./public/assets:/mastodon/public/assets
    - ./public/packs:/mastodon/public/packs
    - ./public/system:/mastodon/public/system
    networks:
    - back
  streaming:
    restart: always
    image: gargron/mastodon:v1.4.7
    env_file: .env.production
    command: npm run start
    depends_on:
    - db
    - redis
    networks:
    - back
  sidekiq:
    restart: always
    image: gargron/mastodon:v1.4.7
    env_file: .env.production
    command: bundle exec sidekiq -q default -q mailers -q pull -q push
    depends_on:
    - db
    - redis
    volumes:
    - ./public/system:/mastodon/public/system
    networks:
    - back
