# How to run the application To run the application, follow these steps: 1. **Build the Project**: - Ensure you have Java 24, Gradle, and Node.js installed. - Run the following command to build the project: ```bash ./gradlew build ``` 2. **Prepare Frontend Resources**: - Build the Angular frontend by navigating to the `jambotron-ui` directory and running ```bash cd jambotron-ui ``` - next: ```bash npm install ``` - next: ```bash npm run build ``` - This will generate the frontend files in the `jambotron-ui/dist/jambotron-ui/browser` directory. 3. **Copy Frontend Resources**: - Use the Gradle task to copy the frontend resources to the `jumbotron/src/main/resources/public` directory: ```bash cd .. ``` - next: ```bash ./gradlew copyResources ``` then 4. **Create postgres server and database**: - Create a PostgreSQL database - named `jambotronDB` with the - user `admin` and - password `postgrespw`. - You can use a PostgreSQL client or run the following command in your terminal: ```sql CREATE DATABASE jambotronDB; CREATE USER admin WITH PASSWORD 'postgrespw'; GRANT ALL PRIVILEGES ON DATABASE jambotronDB TO admin; ``` - If you are using Docker, you can run PostgreSQL using the following command: ```bash docker run --name postgresDB -p 5432:5432 -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=postgrespw -e POSTGRES_DB=jambotronDB -d postgres ``` - if you are wont to use pgadmin ```bash docker run --name pgadmin -e "PGADMIN_DEFAULT_EMAIL=name@example.com" -e "PGADMIN_DEFAULT_PASSWORD=admin" -p 5050:80 -d dpage/pgadmin4 ``` then - create a network for the containers to communicate: ```bash docker network create --driver bridge pgnetwork ``` - Show list of networks: ```bash docker network ls ``` - Connect pgadmin to the network: ```bash docker network connect pgnetwork pgadmin ``` - Connect postgresDB to the network (postgresDB must by running): ```bash docker network connect pgnetwork postgresDB ``` - Inspect the network to ensure both containers are connected: ```bash docker network inspect pgnetwork ``` 5. **Run the Application**: - Start the Spring Boot application: ```bash ./gradlew bootRun ``` 6. **Access the Application**: - Open your browser and navigate to `http://localhost:8080`. Make sure all dependencies and configurations are correctly set up before running these steps. # How to run the application in Docker To run the application in Docker, follow these steps: - build jar file ```bash ./gradlew bootJar ``` - Run docker compose to start the application and PostgreSQL: ```bash docker-compose -f src/Docker/docker-compose.yml up -d ``` - For connection from pgadmin use hostename: **host.docker.internal** # How to run the application in Docker with HTTPS support To run the application in Docker with HTTPS support, follow these steps: 1. **Cerbot** - Run this command below to get certificate and store it to volume certs. - Expanded(readable) command example: docker run -d \ --name certbot \ -v certs:/etc/letsencrypt \ -v certs-data:/var/lib/letsencrypt \ -p 80:80 \ -p 443:443 \ certbot/certbot \ certonly --standalone --preferred-challenges http --email youremail@gmail.com -d yourdomain.com --agree-tos - Command to run certbot with specific domain and email: ```bash docker run -d --name certbot -v certs:/etc/letsencrypt -v certs-data:/var/lib/letsencrypt -p 8081:80 -p 8443:443 certbot/certbot certonly --standalone --preferred-challenges http --email liosha84@gmail.com -d jambotron.run.place --agree-tos ``` - Tip: You can generate certificate to local machine used next command: ```bash docker run -it --rm -p 8081:80 --name certbot -v "C:\certbot\etc\letsencrypt:/etc/letsencrypt" -v "C:\certbot\var\lib\letsencrypt:/var/lib/letsencrypt" certbot/certbot certonly --standalone -d jambotron.run.place ``` certificate files will be stored in `C:\certbot\etc\letsencrypt` and `C:\certbot\var\lib\letsencrypt` directories. - If you have same trouble before running certbot, run this project `Helper_projects/spring-boot-https-main` insted of jambotron project. - TODO: Add cron job to renew certificate automatically. ### Reference Documentation For further reference, please consider the following sections: * [Official Gradle documentation](https://docs.gradle.org) * [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/3.5.0/gradle-plugin) * [Create an OCI image](https://docs.spring.io/spring-boot/3.5.0/gradle-plugin/packaging-oci-image.html) ### Additional Links These additional references should also help you: * [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle) For docker-compose db connect with pgAdmin used host.docker.internal