diff --git a/Dockerfile-dev b/Dockerfile-dev new file mode 100644 index 0000000..7d5d5ff --- /dev/null +++ b/Dockerfile-dev @@ -0,0 +1,12 @@ +# base 3.9.7 jdk 21 +FROM maven:3.9-eclipse-temurin-21-alpine AS build_stage + +WORKDIR /app_build + +COPY pom.xml . + +RUN mvn -e -B dependency:resolve +COPY src ./src + +# Build the project and create the executable JAR +RUN mvn clean -e -B package -DskipTests \ No newline at end of file diff --git a/README.md b/README.md index 2502b1c..cfa5120 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # sekolah -MYSCHOOL adalah source code opensource yang dibangun mengunakan Spring Boot 2.6.3 version yang terinspirasi dari MSCHOOL + +MYSCHOOL adalah source code opensource yang dibangun mengunakan Spring Boot 3.3.1 version yang terinspirasi dari MSCHOOL yang dibangun menggunakan Codeigniter 3.1.9 dan Bootstrap 4.0. MYSCHOOL merupakan pengembangan dari project M-Sekolah. Dengan kata lain, MSCHOOL adalah versi 2.0 dari M-Sekolah dengan Java Spring Boot. @@ -23,10 +24,8 @@ Bagaimana mengonline-kannya? - Buat database di hosting (di sini saya menggunakan PostgreSQL) - Jika Anda mengalami kesulitan saat mengonlinekannya, Anda dapat meminta bantuan pihak hosting untuk membantu Anda mengonlinekannya. - Modul dan Fitur: 1. Dashboard (Unique Visitors Counter) @@ -60,16 +59,21 @@ Modul dan Fitur: 15. SEO URL Friendly ## Cara Membuat Database + 1. Create user untuk connect ke database + ``` createuser -P adminSekolah ``` 2. Create database untuk user tersebut + ``` createdb -OadminSekolah sekolah ``` + Cara install uuid-ossp module, anda harus CREATE EXTENSION statement seperti berikut ini: + ``` CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; ``` @@ -108,30 +112,103 @@ CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; ## Cara menjalankan aplikasi +Ada 2 opsi untuk menjalankan aplikasi ini, via Docker atau via Docker-compose + +### Menjalankan aplikasi via Docker + Di sini saya berasumsi bahawa JDK8, maven & PostgreSQL Database sudah terinstal di lokal anda masing-masing. -* Untuk menjalankan aplikasinya cukup ketik perintah di bawah ini d terminal: +- Untuk menjalankan aplikasinya cukup ketik perintah di bawah ini d terminal: ```shell mvn clean spring-boot:run ``` +- Untuk membungkusnya menjadi paket jar anda bisa menggunakan perintah berikut ini: -* Untuk membungkusnya menjadi paket jar anda bisa menggunakan perintah berikut ini: ``` mvn clean package ``` -* Untuk menjalankan jar dari paket tsb bisa dengan perintah berikut ini: +- Untuk menjalankan jar dari paket tsb bisa dengan perintah berikut ini: + ``` java -jar sekolah.jar ``` + Aplikasi bisa dilihat di Heroku: https://sekolah1.herokuapp.com/ adminnya di https://sekolah1.herokuapp.com/admin +### Menjalankan aplikasi via Docker-Compose + +Build image untuk menjalankan container + +```shell +docker-compose -f build +``` + +jalankan container dari image yang telah dibuat + +```shell +docker-compose -f up +``` + +setiap kali ada perubahan pada konfigurasi file di aplikasi seperti + +_from_ + +```shell +spring.datasource.url=jdbc:postgresql://localhost:5432/sekolah +``` + +_to_ + +```shell +spring.datasource.url=jdbc:postgresql://db:5432/sekolah +``` + +perlu untuk melakukan _build_ ulang + +```shell +docker-compose -f build [service_app_defined_on_docker_compose_file: ex: app or db] +``` + +#### Cara konek ke Postgres Database monitor (PgAdmin) via Docker + +Jika kamu menjalankan aplikasi via _Docker Compose_, maka kamu bisa ikuti langkah ini untuk dapat melakukan monitor data pada database dengan PgAdmin via browser + +```shell +http://localhost:3000/ +``` + +login dengan email dan password yg telah ditetapkan do file docker-compose-dev/yml + +```shell +PGADMIN_DEFAULT_EMAIL: sekolah@mail.com +PGADMIN_DEFAULT_PASSWORD: sekolah_password +``` + +kemudian pada _Quick Links_ pilih _Add New Server_. Pada tab _General_ isikan _Name_ dengan service name yang telah di tetapkan di docker-compose file (ex. db). +Pindah ke tab _Connection_ isikan _Host name / address_ dengan _IP internal_ docker untuk service DB + +```shell +docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' +``` + +kolom _Username_ & _Password_ isikan dengan yang telah ditetapkan di docker-compose file + +```shell +POSTGRES_USER=sekolah +POSTGRES_PASSWORD=sekolah_password +``` + +selesai dan _Save_, selanjutnya akan muncul database yang telah terkoneksi + ## Contributing + Please see [CONTRIBUTING](CONTRIBUTING.md) for details. -## Listed by *Hendi Santika* +## Listed by _Hendi Santika_ + - Email: hendisantika@gmail.com / hendisantika@yahoo.co.id - Telegram: [@hendisantika34](https://t.me/hendisantika34) - Linktree: https://linktr.ee/hendisantika diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml new file mode 100644 index 0000000..1c13ed9 --- /dev/null +++ b/docker-compose-dev.yml @@ -0,0 +1,60 @@ +services: + app: + build: + context: . + dockerfile: Dockerfile-dev + + image: spring_sekolah + container_name: sekolah_app + ports: + - "8080:8080" + environment: + - SPRING_PROFILES_ACTIVE=dev + depends_on: + - db + volumes: + - ./logs:/app_build/logs + - ./src:/app_build/src:delegated # mount the local source code has directly access to container dir for convenient access when has change on source code + - ./target:/app_build/target:delegated + networks: + - sekolah-network + command: mvn spring-boot:run + + db: + image: postgres:16-alpine + container_name: sekolah_db + restart: unless-stopped + environment: + - POSTGRES_USER=sekolah + - POSTGRES_PASSWORD=sekolah_password + - POSTGRES_DB=sekolah + - PGDATA=/var/lib/postgresql/data/pgdata + volumes: + - sekolah-data:/var/lib/posgresql/data + ports: + - "5432:5432" + networks: + - sekolah-network + + db_monitor: + container_name: sekolah_db_monitor + image: dpage/pgadmin4 + restart: unless-stopped + environment: + PGADMIN_DEFAULT_EMAIL: sekolah@mail.com + PGADMIN_DEFAULT_PASSWORD: sekolah_password + depends_on: + - db + ports: + - "3000:80" + networks: + - sekolah-network + volumes: + - sekolah-data-pgadmin:/var/lib/pgadmin + +volumes: + sekolah-data: + sekolah-data-pgadmin: + +networks: + sekolah-network: diff --git a/pom.xml b/pom.xml index 17c3a49..700ffcc 100644 --- a/pom.xml +++ b/pom.xml @@ -15,6 +15,7 @@ Demo project for Spring Boot + 21 @@ -97,6 +98,10 @@ org.flywaydb flyway-core + + org.flywaydb + flyway-database-postgresql + eu.bitwalker UserAgentUtils @@ -161,6 +166,7 @@ + sekolah org.springframework.boot @@ -181,7 +187,7 @@ - + org.apache.maven.plugins maven-compiler-plugin 3.13.0 + 21 21 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c98cc1e..46044c2 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,8 +1,8 @@ spring: datasource: - url: jdbc:postgresql://localhost:5432/sekolah - username: adminSekolah - password: passwordSekolah + url: jdbc:postgresql://db:5432/sekolah + username: sekolah + password: sekolah_password jpa: open-in-view: false show-sql: true @@ -19,13 +19,13 @@ spring: thymeleaf: cache: false check-template: true - check-template-location: true + check-template-location: false enabled: true encoding: UTF-8 mode: HTML - # prefix: classpath:/templates/ + # prefix: file:src/main/resources/templates/, classpath:/templates/ prefix: file:src/main/resources/templates/ -# prefix: ${project.basedir}/src/main/resources/templates/ + # prefix: ${project.basedir}/src/main/resources/templates/ suffix: .html # excluded-view-names: # template-resolver-order: @@ -36,6 +36,11 @@ spring: livereload: enabled: true add-properties: true + resources: + static-locations: file:src/main/resources/static/, classpath:static/ + # static-locations: ${project.basedir}/src/main/resources/static/ + cache: + period: 0 servlet: multipart: max-file-size: 5MB @@ -74,8 +79,5 @@ server: # 1 days = 1 * 24 * 60 * 60 cookie: maxAge: 86400 - - - #hendisantika/password #admin/password diff --git a/src/main/resources/templates/fragments/dashboard/sidebar.html b/src/main/resources/templates/fragments/dashboard/sidebar.html index 98ce208..b39ddf8 100644 --- a/src/main/resources/templates/fragments/dashboard/sidebar.html +++ b/src/main/resources/templates/fragments/dashboard/sidebar.html @@ -1,173 +1,188 @@ -