Skip to content

Latest commit

 

History

History
47 lines (43 loc) · 2.58 KB

README.md

File metadata and controls

47 lines (43 loc) · 2.58 KB

Docker Container Infrastructure

This repository details all of the underlying production infrastructure for databases, reverse proxies, and administration tools that the coursetable abstracts away.

The infrastructure is currently designed to provision on a monolithic VM. However, it is configuration-agonistic. Its pure dependencies are docker and docker compose. Please see deployment.md for instructions on how to bootstrap a new server.

Each directory denotes a separate Docker Compose configuration, each with its own network.

Below is the list of every network and its attached services (including those defined in coursetable):

  • traefik
    • traefik
      • Container Name / Docker Hostname: traefik
      • Purpose: Reverse proxy router for all incoming requests
      • Access: Public (*coursetable.com)
  • mysql
    • mysql
      • Container Name / Docker Hostname: ${MYSQL_HOST}
      • Purpose: Standing MySQL DB for all user data
      • Access: Local
    • phpmyadmin
      • Container Name / Docker Hostname:phpmyadmin
      • Purpose: PHP My Admin GUI for MySQL DB
      • Access: Authorized Public pma.coursetable.com
  • ferry
    • db
      • Container Name / Docker Hostname: ${FERRY_HOST}
      • Purpose: Standing Postgres DB for all course data (see ferry)
      • Access: Authorized Public
  • ${API_NETWORK}
    • api
      • Container Name / Docker Hostname: ${EXPRESS_HOST}
      • Purpose: Continuously deployed application server
      • Access: Public api.coursetable.com
  • api_services
    • graphql-engine
      • Container Name / Docker Hostname: ${GRAPHQL_ENGINE_HOST}
      • Purpose: Hasura Engine wrapping the ferry container
      • Access: Local (Public Proxy: https://coursetable.com/graphiql)
    • redis
      • Container Name / Docker Hostname: ${REDIS_HOST}
      • Purpose: KV cache for session management
      • Access: Local
  • under_maintenance
    • web
      • Container Name / Docker Hostname: under_maintenance
      • Purpose: Maintenance page that loads if the api service is not up.
      • Access: Public (*coursetable.com)