Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Capability docker compose to run #46

Merged
merged 9 commits into from
Jun 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions Dockerfile-dev
Original file line number Diff line number Diff line change
@@ -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
91 changes: 84 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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)
Expand Down Expand Up @@ -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";
```
Expand Down Expand Up @@ -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 <docker compose file.yml> build
```

jalankan container dari image yang telah dibuat

```shell
docker-compose -f <docker compose file.yml> 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 <docker compose file.yml> 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: [email protected]
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}}' <container name of service, ex. sekolah_db>
```

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: [email protected] / [email protected]
- Telegram: [@hendisantika34](https://t.me/hendisantika34)
- Linktree: https://linktr.ee/hendisantika
Expand Down
60 changes: 60 additions & 0 deletions docker-compose-dev.yml
Original file line number Diff line number Diff line change
@@ -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
4sskick marked this conversation as resolved.
Show resolved Hide resolved
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: [email protected]
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:
12 changes: 10 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<description>Demo project for Spring Boot</description>

<properties>
<!-- <java.version>17</java.version> -->
<java.version>21</java.version>
</properties>

Expand Down Expand Up @@ -97,6 +98,10 @@
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
</dependency>
<dependency>
<groupId>eu.bitwalker</groupId>
<artifactId>UserAgentUtils</artifactId>
Expand Down Expand Up @@ -161,6 +166,7 @@
</dependencies>

<build>
<finalName>sekolah</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
Expand All @@ -181,7 +187,7 @@
</execution>
</executions>
</plugin>
<plugin>
<!-- <plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>4.9.10</version>
Expand All @@ -208,12 +214,14 @@
</gitDescribe>
<skip>${maven.gitcommitid.skip}</skip>
</configuration>
</plugin>
</plugin> -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<!-- <source>17</source>
<target>17</target> -->
<source>21</source>
<target>21</target>
</configuration>
Expand Down
20 changes: 11 additions & 9 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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:
Expand All @@ -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
Expand Down Expand Up @@ -74,8 +79,5 @@ server:
# 1 days = 1 * 24 * 60 * 60
cookie:
maxAge: 86400



#hendisantika/password
#admin/password
Loading
Loading