Giter VIP home page Giter VIP logo

bookystore's Introduction

BookyStore

ARCHIVED, środowisko produkcyjne wyłączone, CI/CD wyłączone.

Continuous Integration
Continuous Deployment

System księgarni do projektu zaliczeniowego z przedmiotu "Systemy klasy Enterprise - persystencje" na Uniwersytecie Marii Curie-Skłodowskiej w Lublinie.

Zagadnienia

  • 3: CRUD + Spring Security z podziałem na role : admin - dodaje i usuwa książki z księgarni, user możne przeglądać.
  • 3.5: CRUD + koszyk - Dodawanie, usuwanie książek przez usera.
  • 4: Zamówienia - Dodanie funkcji które może wykonywać user - składanie zamówień na książki, zmiana statusu zamówienia przez admina.
  • 4.5: Wygląd aplikacji - Można użyć bootstrapa / własny bardziej rozbudowany projekt lub bardziej rozszerzony projekt z przykładu
  • 5: Płatności - podpięcie np. PayU

Technologie

Kompilacja

Projekt jest tworzony z użyciem Mavena, zbudować go więc można za pomocą:

./mvnw clean package

Argument clean zapewnia że zbudowany zostanie najświeższy wariant projektu, a cykl package pobierze zależności, skompiluje projekt, uruchomi testy jednostkowe oraz utworzy paczkę jar w folderze target.

Profile

W projekcie zdefiniowane są trzy profile:

  • Profil dev

    Profil domyślny, wybierany, gdy żaden inny nie zostanie sprecyzowany. Uruchamia bazę danych H2 in-memory oraz dodaje do niej konsolę pod adresem /h2-console. Baza jest usuwana i tworzona od nowa za każdym uruchomieniem. Jawnie możemy go sprecyzować do kompilacji dodając flagę -Pdev. UWAGA: w środowisku dev nie będzie działał callback z PayU (no bo localhost), więc trzeba symulować jego przyjście ręcznie.

  • Profil docker:

    Profil dedykowany dla uruchomienia z docker compose. Podpina się do bazy danych PostgreSQL uruchamianej razem z aplikacją z URLem bazowanym na nazwie hosta pochodzącej z sieci wewnętrznej dockera. Baza jest aktualizowana do najnowszej wersji, a dane z niej persystują w utworzonym przez dockera woluminie. UWAGA: w środowisku docker nie będzie działał callback z PayU (no bo localhost), więc trzeba symulować jego przyjście ręcznie.

  • Profil prod:

    Profil dedykowany dla uruchomienia w środowisku produkcyjnym. Używane jest przez pipeline cd.yml uruchamiany jako GitHub action, który buduje z nim aplikację wstawiając wrażliwe dane ze zmiennych środowiskowych, które są przekazywane z GitHub secrets. Deploy aplikacji znajduje się w platformie Azure.

Uruchomienie

(najprostszy sposób z wykorzystaniem dockera na końcu sekcji)

Nie trzeba tak na prawdę uruchamiać aplikacji u siebie. Jest ona dostępna w środowisku produkcyjnym pod adresem https://bookystore.azurewebsites.net.

Jeśli jednak chcemy lokalnie:

Projekt uruchomić można bezpośrednio z kodu za pomocą cyklu mavena:

./mvnw spring-boot:run

Wykorzystany wtedy jest domyślny profil dev. Aplikacja będzie dostępna na porcie 8080.

Można także uruchomić zbudowany wcześniej plik jar:

java -jar target/bookystore-*.jar

Wykorzysta to profil który posłużył do zbudowania pliku jar (przy wywołaniu package).

Można także zbudować obraz dockera oraz uruchomić go:

docker build -t bookystore .
docker run bookystore

Zbudowanie bezpośrednio przez docker wykorzysta Dockerfile, który z kolei używa profilu dev, więc obraz den będzie wykorzystywał bazę H2 bez persystencji między uruchomieniami.

Najprościej jednak aby uruchomić lokalnie z PostgreSQL, można aplikację zbudować oraz uruchomić z użyciem docker compose:

docker compose build # alternatywnie docker-compose build
docker compose up # alternatywnie docker-compose up

Uruchomi to obraz bazy danych oraz obraz aplikacji (wykorzysta do tego Dockerfile.compose). Wykorzysta więc profil docker. Aplikacja będzie dostępna na porcie 8080.

Deploy

Środowisko produkcyjne działa pod adresem https://bookystore.azurewebsites.net. Z każdym pushem nowego kodu na gałąź main uruchamia się proces deployu na platformę Azure najświeższej wersji aplikacji.

Obsługa

Domyślnie utworzony użytkownik:

Utworzyć można także swoich nowych użytkowników, każdy zarejestrowany użytkownik domyślnie otrzymuje rolę user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.