version: '2'
services:
  db:
    container_name: scinote_db_development
    image: postgres:15
    volumes:
      - scinote_development_postgres:/var/lib/postgresql/data
    environment:
      - "POSTGRES_USER=postgres"
      - "POSTGRES_PASSWORD=mysecretpassword"

  web:
    build:
      context: .
      dockerfile: Dockerfile
    image: scinote_web_development
    container_name: scinote_web_development
    stdin_open: true
    tty: true
    user: scinote
    depends_on:
      - db
    ports:
      - "3000:3000"
    command: >
      bash -c "rm -f /usr/src/app/tmp/pids/server.pid &&
               (bundle check || bundle install) &&
               bundle exec rails s -b 0.0.0.0"
    environment:
      - RAILS_ENV=development
    volumes:
      - .:/usr/src/app
      - scinote_development_bundler:/usr/local/bundle/
      - scinote_development_files:/usr/src/app/public/system
      - scinote_development_storage:/usr/src/app/storage

  webpack:
    build:
      context: .
      dockerfile: Dockerfile
    image: scinote_web_development
    container_name: scinote_webpack_development
    stdin_open: true
    tty: true
    user: scinote
    command: >
      bash -c "yarn install && yarn build --watch"
    environment:
      - NODE_ENV=development
    volumes:
      - .:/usr/src/app
      - scinote_development_bundler:/usr/local/bundle/
      - scinote_development_files:/usr/src/app/public/system

  css_bundling:
    build:
      context: .
      dockerfile: Dockerfile
    image: scinote_web_development
    container_name: scinote_css_bundling_development
    stdin_open: true
    tty: true
    user: scinote
    command: >
      bash -c "yarn build:css --watch"
    environment:
      - NODE_ENV=development
    volumes:
      - .:/usr/src/app
      - scinote_development_bundler:/usr/local/bundle/
      - scinote_development_files:/usr/src/app/public/system

  tailwind:
    build:
      context: .
      dockerfile: Dockerfile
    image: scinote_web_development
    container_name: scinote_tailwind_development
    stdin_open: true
    tty: true
    user: scinote
    command: >
      bash -c "rails tailwindcss:watch"
    environment:
      - RAILS_ENV=development
      - NODE_ENV=development
    volumes:
      - .:/usr/src/app
      - scinote_development_bundler:/usr/local/bundle/
      - scinote_development_files:/usr/src/app/public/system

volumes:
  scinote_development_postgres:
  scinote_development_bundler:
  scinote_development_files:
  scinote_development_storage:
