CMSgov/dpc-app

View on GitHub
docker-compose.portals.yml

Summary

Maintainability
Test Coverage
version: '3'

volumes:
  coverage:


services:

  redis:
    image: redis:latest

  dpc_web:
    build:
      context: .
      dockerfile: dpc-web/Dockerfile
    image: dpc-web:latest
    volumes:
      - "./dpc-web/coverage:/dpc-web/coverage"
      - ./tmp/letter_opener/web:/dpc-web/tmp/letter_opener

    environment:
      - REDIS_URL=redis://redis
      - DATABASE_URL=postgresql://db/dpc-website_development
      - TEST_DATABASE_URL=postgresql://db/dpc-website_test
      - API_METADATA_URL=http://api:3002/v1
      - API_ADMIN_URL=http://api:9900
      - GOLDEN_MACAROON=${GOLDEN_MACAROON}
      - DB_USER=postgres
      - DB_PASS=dpc-safe
      - DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true
      - DPC_CA_CERT=${DPC_CA_CERT}
      - RUBY_YJIT_ENABLE=1
    ports:
      - "3900:3500"
    depends_on:
      - db
      - redis
      - web_sidekiq

  web_sidekiq:
    volumes:
      - ./tmp/letter_opener/web:/dpc-web/tmp/letter_opener
    build:
      context: .
      dockerfile: dpc-web/Dockerfile
    command: sidekiq
    image: dpc-web-sidekiq:latest
    environment:
      - REDIS_URL=redis://redis
      - DATABASE_URL=postgresql://db/dpc-website_development
      - DB_USER=postgres
      - DB_PASS=dpc-safe
    depends_on:
      - redis
      - db

  dpc_admin:
    build:
      context: .
      dockerfile: dpc-admin/Dockerfile
    image: dpc-web-admin:latest
    volumes:
      - "./dpc-admin/coverage:/dpc-admin/coverage"
      - ./tmp/letter_opener/admin:/dpc-admin/tmp/letter_opener
    environment:
      - REDIS_URL=redis://redis
      - GOLDEN_MACAROON=${GOLDEN_MACAROON}
      - API_METADATA_URL=http://api:3002/v1
      - API_ADMIN_URL=http://api:9900
      - DATABASE_URL=postgresql://db/dpc-website_development
      - TEST_DATABASE_URL=postgresql://db/dpc-website_test
      - DB_USER=postgres
      - DB_PASS=dpc-safe
      - DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true
      - RUBY_YJIT_ENABLE=1
    ports:
      - "3000:3000"
    depends_on:
      - db
      - redis
      - admin_sidekiq

  admin_sidekiq:
    volumes:
      - ./tmp/letter_opener/admin:/dpc-admin/tmp/letter_opener
    build:
      context: .
      dockerfile: dpc-admin/Dockerfile
    command: sidekiq
    image: dpc-admin-sidekiq:latest
    environment:
      - REDIS_URL=redis://redis
      - DATABASE_URL=postgresql://db/dpc-website_development
      - DB_USER=postgres
      - DB_PASS=dpc-safe
    depends_on:
      - redis
      - db

  dpc_portal:
    build:
      context: .
      dockerfile: dpc-portal/Dockerfile
    image: dpc-web-portal:latest
    volumes:
      # Mount specific directories to avoid overwriting 
      # precompiled assets (public/assets/) and node_modules
      - "./dpc-portal/app:/dpc-portal/app"
      - "./dpc-portal/db:/dpc-portal/db"
      - "./dpc-portal/lib:/dpc-portal/lib"
      - "./dpc-portal/log:/dpc-portal/log"
      - "./dpc-portal/bin:/dpc-portal/bin"
      - "./dpc-portal/config:/dpc-portal/config"
      - "./dpc-portal/config.ru:/dpc-portal/config.ru"
      - "./dpc-portal/spec:/dpc-portal/spec"

      # Mount dependency files
      - "./dpc-portal/package.json:/dpc-portal/package.json"
      - "./dpc-portal/package-lock.json:/dpc-portal/package-lock.json"
      - "./dpc-portal/Gemfile:/dpc-portal/Gemfile"
      - "./dpc-portal/Gemfile.lock:/dpc-portal/Gemfile.lock"

      # Mount coverage and utility files
      - "./dpc-portal/coverage:/dpc-portal/coverage"
      - ./tmp/letter_opener/portal:/dpc-portal/tmp/letter_opener
    env_file:
      - ./ops/config/decrypted/local.env
    environment:
      # Misc. non-application settings
      - TERM=${TERM:-xterm-256color}
      - 'PS1=${DOCKER_PS1:-[docker] \w: }'
      - "LSCOLORS=${DOCKER_LSCOLORS:- }"
      # Application settings
      - REDIS_URL=redis://redis
      - DATABASE_URL=postgresql://db/dpc-portal_development
      - TEST_DATABASE_URL=postgresql://db/dpc-portal_test
      - GOLDEN_MACAROON=${GOLDEN_MACAROON}
      - API_METADATA_URL=http://api:3002/v1
      - API_ADMIN_URL=http://api:9900
      - DB_USER=postgres
      - DB_PASS=dpc-safe
      - DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true
      - CPI_API_GW_BASE_URL=http://localhost:4567/
      - CMS_IDM_OAUTH_URL=http://localhost:4567/
      - RUBY_YJIT_ENABLE=1
      - ENV=local
    ports:
      - "3100:3100"
    depends_on:
      - db
      - portal_sidekiq

  portal_sidekiq:
    volumes:
      - ./tmp/letter_opener/portal:/dpc-portal/tmp/letter_opener
    build:
      context: .
      dockerfile: dpc-portal/Dockerfile
    command: sidekiq
    image: dpc-web-portal:latest
    environment:
      - REDIS_URL=redis://redis
      - DATABASE_URL=postgresql://db/dpc-portal_development
      - DB_USER=postgres
      - DB_PASS=dpc-safe
      - GOLDEN_MACAROON=${GOLDEN_MACAROON}
      - API_METADATA_URL=http://api:3002/v1
    depends_on:
      - redis
      - db

  # Starts up each service in the background
  start_core_dependencies:
    image: dadarek/wait-for-dependencies
    depends_on:
      - db
      - redis
    command: db:5432

  start_web:
    image: dadarek/wait-for-dependencies
    depends_on:
      - dpc_web
    command: dpc_web:3500

  start_admin:
    image: dadarek/wait-for-dependencies
    depends_on:
      - dpc_admin
    command: dpc_admin:3000

  start_portal:
    image: dadarek/wait-for-dependencies
    depends_on:
      - dpc_portal
    command: dpc_portal:3100