This project focuses on automating the deployment of a web application for music sharing using Docker. It involves creating a the full-stack application that allows users to register, sign in, upload and download music, as well as delete their uploaded files. The primary goal is to establish a platform for efficient and rapid exchange of audio files. Note that the website is not mobile-friendly yet.
- Jaka Pelko
- Miha Vintar
The project consists of the following key components:
-
Docker Compose Configuration:
- The
docker-compose.ymlfile defines the services and their interactions. - There are 5 different services implemented.
- The
-
Docker Volumes:
- Volumes are used for Minio file storage and database storage, ensuring data persistence between container restarts.
-
Multi-stage Builds:
- Nginx, express and postgres are compiled by using multistage-builds. The final stage's image is optimized and minimalized by using distroless, alpine images.
-
Continuous Integration/Continuous Deployment (CI/CD):
- A CI/CD pipeline is established to automate the build of nginx image at commit.
Before proceeding with the steps below, ensure that you have Docker installed on your system as it is a requirement for this project.
-
Clone the repository:
git clone git@github.com:jakepel03/msi-docker.git
-
Move to the root directory of the repository:
cd msi-docker -
(Optional) You can create an
.envfile in the root folder of the cloned repository and specify the following environmental variables:
-
POSTGRES_USER -
POSTGRES_PASSWORD -
MINIO_ROOT_USER -
MINIO_ROOT_PASSWORD -
JWT_SECRETIf
.envfile is not present, default values will be used for those environmental variables.
-
Run the following command to launch the VM:
docker compose up -d
Wait until containers are started.
-
Once the containers are running, you can access the website on http://localhost
-
If you want to stop and remove the containers, run:
docker compose down




