Skip to content

Latest commit

 

History

117 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deploying via Docker

August 2024 - James Robiony-Rogers & Corban Surtees

Using virtualisation to effect portable building and deployment of software applications


Frontend Build and Test

Overview

This project demonstrates the use of virtualization technologies to build and deploy a portable software application designed for job seekers. Our application, the Job Application Tracker, helps students and job seekers efficiently manage their job search process. It operates across three different virtual machines (VMs), showcasing the power of distributed systems and cloud-ready software development practices.

The Job Application Tracker allows users to record and monitor the companies and roles they've applied to, including key information such as application status, submission dates and additional notes.

Built With

File Tree

  • .github/workflows - Contains the GitHub Actions workflow for CI/CD
  • frontend - Contains the React frontend project
  • backend - Contains the Python Flask backend project
  • database - Contains the Supabase database configuration

Running the Project Locally

Running the project locally requires Docker to be installed on your machine.

  1. Clone the Repository using the following command:
git clone https://github.com/JamesRobionyRogers/Assignment01-VirtualisingSoftware.git
  1. Change into the project directory:
cd Assignment01-VirtualisingSoftware
  1. Build and run the Job Tracker:
docker compose build
docker compose up -d
  1. Access the application via the following URLs:
  1. Shut down the Job Tracker:
docker compose down

View Project


Container Structure

This projects is build utilising three containers. The containers are as follows:

  • Frontend Tier: This container hosts the React.js application interface via nginx.
  • Backend Tier: This container runs the Python Flask REST API.
  • Database Tier: The database tier is a collection of services running in containers that run make up the Supabase database and its services.

By separating the application into different containers, we can achieve a modular design where each container handles a distinct aspect of the application. This setup enhances scalability, maintenance, and isolation of services.

The containers are all connected via the backend container. Http requests are sent between the containers to allow them to communicate.

Docker Compose Configuration

The project uses Docker Compose to manage the setup of all necessary services. The docker-compose.yml file in the root directory defines the services required to run the application. After the initial setup, the application will preload test data for demonstration purposes.

Through the build process, the application will automatically download and configure all required components. For a fresh build, this involves downloading Docker images and setting up containers, with approximate download volumes specified in the project report.


Example Data

The application comes preloaded with example data to demonstrate its functionality. The example data includes two users, each with their own applications. The users are as follows:

Name Email Address Password
John Doe john.doe@example.com password123
Jane Smith jane.smith@example.com password123

Further Development

The Job Application Tracker is a versatile application that can be extended in various ways. Below are links to the various tiers README files to get up to speed with development on the project.

  • Frontend README: here
  • Backend README: here
  • Database README: here

About

Using virtualisation to effect portable building and deployment of software applications

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages