gig changes

This commit is contained in:
Amit Kumar Nandi 2024-02-15 16:50:39 +05:30
parent 88ad86e26a
commit d9160d50b3
5 changed files with 161 additions and 48 deletions

View file

@ -1,5 +1,10 @@
# syntax=docker/dockerfile:1
# Add the following lines to tag the image (replace 'your_username' and 'shortener-app' with your Docker Hub username and repository name)
ARG VERSION=latest
ARG IMAGE_NAME=bigwiz/shortener
ARG TAG=$VERSION
# Stage 1: Build the application
FROM maven:3.9.6-eclipse-temurin-21 AS builder
@ -19,8 +24,9 @@ ENV CATALINA_BASE /usr/local/tomcat
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
# Copy the WAR file from the builder stage
COPY target/shortener.war $CATALINA_BASE/webapps/
COPY --from=builder /URLShortener/target/shortener.war $CATALINA_BASE/webapps/
# Add configuration for document base path
@ -44,4 +50,3 @@ RUN chmod +x /usr/local/tomcat/shortener.sh
# Start Tomcat and MariaDB using the startup script
CMD ["sh", "/usr/local/tomcat/shortener.sh"]

View file

@ -1,9 +1,11 @@
## Enterprise-Grade URL Shortener and Bio Page Application
## ![](https://33333.cdn.cke-cs.com/kSW7V9NHUXugvhoQeFaf/images/849f04bc0b71c7572b553b2b283f7590067b036c87a71ba9.webp)**TUSC - The URL Shortener Company**
[![Build Status](https://travis-ci.org/yourusername/your-repo.svg?branch=main)](https://travis-ci.org/aamitn/URLShortener)[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)[![GitHub last commit](https://img.shields.io/github/last-commit/aamitn/URLShortener.svg)](https://github.com/aamitn/URLShortener/commits/main)[![GitHub issues](https://img.shields.io/github/issues/aamitn/URLShortener.svg)](https://github.com/aamitn/URLShortener/issues)[![GitHub pull requests](https://img.shields.io/github/issues-pr/aamitn/URLShortener.svg)](https://github.com/aamitn/URLShortener/pulls)[![GitHub contributors](https://img.shields.io/github/contributors/aamitn/URLShortener.svg)](https://github.com/aamitn/URLShortener/graphs/contributors)
[![Twitter](https://img.shields.io/twitter/url/https/github.com/yourusername/your-repo.svg?style=social)](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Faamitn%2FURLShortener&text=Check%20out%20this%20awesome%20URL%20Shortener%20and%20Bio%20Page%20Application&via=yourtwitterhandle)
A powerful and scalable URL shortener with integrated bio pages built using Spring Boot.
An enterprise-grade, powerful and scalable URL shortener with integrated bio pages built using Spring Boot.
<table><tbody><tr><td>Maven Package</td><td><a href="https://onlinemarkdowneditor.dev/">Free Collaborative Markdown Editor - onlinemarkdowneditor.dev</a></td></tr><tr><td>Docker Image</td><td><a href="https://onlinemarkdowneditor.dev/">Free Collaborative Markdown Editor - onlinemarkdowneditor.dev</a></td></tr></tbody></table>
## Table of Contents
@ -23,14 +25,14 @@ This project is an enterprise-grade URL shortener and bio page application devel
## Features
* Shorten URLs and create custom short URLs
* Integrated bio pages for users
* Analytics tracking for each shortened URL
* User management with registration, login, and profile updates
* Subscription plans for premium features
* Rate limiting to prevent abuse
* Forgot password and username recovery functionality
* ...
* Shorten URLs and create custom short URLs.
* Integrated bio pages for users.
* Analytics tracking for each shortened URL.
* User management with registration, login, and profile updates.
* Subscription plans for premium features.
* Rate limiting to prevent abuse.
* Forgot password and username recovery functionality.
* OPEN API 3.0 Complaint REST API set, with extensive docs.
## Getting Started
@ -43,6 +45,7 @@ Before you begin, ensure you have the following installed:
* MySQL
* Your favorite IDE (IntelliJ, Eclipse, etc.)
### Local Setup
1. Clone the repository:
@ -61,7 +64,7 @@ Before you begin, ensure you have the following installed:
3. Update the application.properties file:
 Update the application.properties file in the src/main/resources directory with your database configuration.
Update the application.properties file in the src/main/resources directory with your database configuration.
4. Build and run the application:
@ -72,6 +75,7 @@ Before you begin, ensure you have the following installed:
5. Access the application at http://localhost:8080
### Deployment
1. **Build a deployable WAR:**
@ -130,7 +134,53 @@ Before you begin, ensure you have the following installed:
```
### Usage
### Cloud Native Deployment
To deploy the URL Shortener application on your cloud environment, follow the steps below:
**Prerequisites**
* [Docker](https://www.docker.com/get-started)
* [Docker Compose](https://docs.docker.com/compose/install/)
1. **Clone the Repository:**
```plaintext
git clone https://github.com/your-username/URLShortener.git
cd URLShortener
```
2. **Build and Run Your Own Image:**
```plaintext
docker build -t shortener:latest .
docker run -p 8080:8080 -p 3306:3306 shortener:latest
```
3. **Use Our Pre-built Image with Docker Compose:**
```plaintext
docker compose build
docker compose up
```
4. **Customizing Docker Compose Configuration:**
In the **docker-compose.yml** file, you can customize the build source for the Shortener service:
```plaintext
#Build from docker hub image .Comment/Uncomment Below
image: nmpl/shortener:latest
#Build from local Dockerfile.Comment/Uncomment Below
# build:
# context: .
# dockerfile: Dockerfilekerfile
```
Comment or uncomment the relevant lines based on whether you want to use the pre-built image from Docker Hub or build from the local Dockerfile.
### Usage Cases
1. Shorten URLs by visiting the URL Shortener page.
2. Access analytics for each shortened URL.

View file

@ -2,9 +2,36 @@ version: '3.8'
services:
shortener-app:
build:
context: .
dockerfile: Dockerfile
labels:
- "TUSC The URL Shortener Company"
#Build from docker hub image .Comment/Uncomment Below
image: nmpl/shortener:latest
#Build from local Dockerfile.Comment/Uncomment Below
# build:
# context: .
# dockerfile: Dockerfile
ports:
- "8080:8080"
- "3306:3306"
volumes:
- shortener-db-data:/var/lib/mysql
- type: volume
source: shortener-db-data
target: /var/lib/mysql
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8080/monitoring" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
restart: unless-stopped
volumes:
shortener-db-data:
name: shortener-db-data

View file

@ -178,7 +178,7 @@
<packaging>${project.packaging}</packaging>
<build>
<finalName>${artifactId}</finalName>
<finalName>${project.artifactId}</finalName>
<pluginManagement>

View file

@ -0,0 +1,31 @@
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 120 120">
<!-- Background Parallelogram Shape -->
<polygon points="0,0 0,0, 120,60,0,170" fill="#3498db" />
<!-- Wire -->
<line x1="20" y1="50" x2="90" y2="50" stroke="#fff" stroke-width="5" />
<!-- Plug -->
<rect x="50" y="40" width="20" height="20" fill="#e74c3c" />
<!-- T Letter -->
<text x="2%" y="70%" font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" font-size="25" fill="#fff" font-weight="bold">
<tspan font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" font-size="52" letter-spacing="2">T</tspan>
</text>
<!-- U Letter -->
<text x="20%" y="70%" font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" font-size="25" fill="#fff" font-weight="bold">
<tspan font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" font-size="40" letter-spacing="2">U</tspan>
</text>
<!-- S Letter -->
<text x="40%" y="70%" font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" font-size="25" fill="#fff" font-weight="bold">
<tspan font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" font-size="40" letter-spacing="2">S</tspan>
</text>
<!-- C Letter -->
<text x="58%" y="70%" font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" font-size="25" fill="#fff" font-weight="bold">
<tspan font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" font-size="40" letter-spacing="2">C</tspan>
</text>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB