From be0ec073a3a39b7fbc0e0f708ab705a4d5c6a7fc Mon Sep 17 00:00:00 2001 From: Samy Avrillon Date: Mon, 9 Jun 2025 15:27:26 +0200 Subject: [PATCH] Can now be deployed --- Dockerfile | 23 +++++++++++++++++++ README.md | 13 +++++++++++ build.gradle | 5 ++-- compose.yaml | 17 +++++++++++++- launcher.sh | 6 +++++ src/main/resources/application.yml | 3 ++- src/main/resources/static/images/favicon.ico | Bin 0 -> 4286 bytes 7 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 launcher.sh create mode 100644 src/main/resources/static/images/favicon.ico diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ba4fb8a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM gradle:jdk21 AS builder + +WORKDIR /build/ +ADD src /build/src/ +ADD build.gradle /build/ +ADD settings.gradle /build/ +ADD versions.properties /build/ + + +RUN gradle assemble + +FROM eclipse-temurin:21-noble +WORKDIR /opt/ +ADD "https://download.red-gate.com/maven/release/com/redgate/flyway/flyway-commandline/11.9.1/flyway-commandline-11.9.1-linux-x64.tar.gz" /opt/flyway.tar.gz +RUN tar -xvzf /opt/flyway.tar.gz -C /opt/ +RUN ln -s /opt/flyway-11.9.1/flyway /usr/local/bin + +WORKDIR /app/ +COPY --from=builder /build/build/libs/misael-beta.jar /app/misael.jar +COPY --from=builder /build/build/resources/ /app/resources/ +ADD launcher.sh /app/ + +ENTRYPOINT ["bash","./launcher.sh"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..39f25c4 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# Misael + +## For dev +You need to setup a postgres server at localhost:5432, with user misael with password misael-dev + +Then, you run the database migration `./gradlew flywayMigrate` + +And finaly we run `./gradlew bootRun` + +## For deployment +The compose file is enough. + +`launcher.sh` checks that the migrations are applied and then runs the spring boot server on port 8080 diff --git a/build.gradle b/build.gradle index 1c20a5e..bad4fb6 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ plugins { group = 'com.bernard' -version = '0.0.1-SNAPSHOT' +version = 'beta' java { toolchain { @@ -42,7 +42,6 @@ dependencies { implementation 'jakarta.validation:jakarta.validation-api:_' runtimeOnly 'org.webjars:jquery:_' developmentOnly Spring.boot.devTools - developmentOnly 'org.springframework.boot:spring-boot-docker-compose:_' runtimeOnly 'org.postgresql:postgresql:_' testImplementation Spring.boot.test testRuntimeOnly 'org.junit.platform:junit-platform-launcher:_' @@ -59,7 +58,7 @@ dependencies { } flyway { - url = "jdbc:postgresql://127.0.0.1:10051/misael" + url = "jdbc:postgresql://127.0.0.1:5432/misael" user = 'misael' password = 'misael-dev' driver = 'org.postgresql.Driver' diff --git a/compose.yaml b/compose.yaml index b0686b6..5bf3011 100644 --- a/compose.yaml +++ b/compose.yaml @@ -5,5 +5,20 @@ services: - 'POSTGRES_DB=misael' - 'POSTGRES_PASSWORD=misael-dev' - 'POSTGRES_USER=misael' + networks: + - misanetwork + + misael: + image: 'misael:latest' + build: . + environment: + - 'MISAEL_DATABASE=jdbc:postgresql://postgres:5432/misael' + - 'MISAEL_PASSWORD=misael-dev' ports: - - '10051:5432' + - 8080:8080 + networks: + - misanetwork + +networks: + misanetwork: + driver: bridge diff --git a/launcher.sh b/launcher.sh new file mode 100644 index 0000000..1b54191 --- /dev/null +++ b/launcher.sh @@ -0,0 +1,6 @@ + +echo "Checking Database Migration" +flyway "-url=$MISAEL_DATABASE" -user=misael "-password=$MISAEL_PASSWORD" -locations="filesystem:resources/main/db/migration/" -schemas=misael migrate + +echo "Running" java -jar misael.jar --spring.datasource.url=$MISAEL_DATABASE --spring.datasource.password=$MISAEL_PASSWORD +java -jar misael.jar --spring.datasource.url=$MISAEL_DATABASE --spring.datasource.password=$MISAEL_PASSWORD diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 14584a4..63c7b6d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,8 +1,9 @@ spring: datasource: - url: jdbc:postgres://127.0.0.1:10051/misael + url: jdbc:postgresql://127.0.0.1:5432/misael username: misael password: misael-dev + driver-class-name: org.postgresql.Driver hikari: schema: misael flyway: diff --git a/src/main/resources/static/images/favicon.ico b/src/main/resources/static/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6b70f961e7a20c50deb782b531f65e477a8969bf GIT binary patch literal 4286 zcmZQzU}RuqP*4ET3Jfa*7#PGD7#K7d7#I{77#JKFAmR)lAi%(&tOvm$E+M=>*q&v7 zu&vVm0Gr4I-j+)bI2pe@Xs!R}poQ*#FgDlye-MOWd~5wb2i(o?g4BZafb|C3vk=wQMAUzv4+jh`g*92td{$P6!Y<9xLKz8pBv~@q=VSeJE zx$X)SyFvc4(*1wXPWS%-C!PNXTy*{)aD`$J+ers3cMzloq!!|?-(WL9@#0~A0%SHW zH-N-J@(0azV-8yB{X1x``wkwrR!}?rbpG#;*8aagS?mA4Os)U>ay0*&{xt=&L1G{_ zHVih$O7GtRH?ylCJ3w~9{0yQ&akD?r)&%Tth~0>EWv}~xzrXhX{R!G&`}XE*{@+`u z`G0Sb=Kp=A#$fwFY>*hpZjhTmYC(Dq+M}gYkQ*T3U;?reWH$(d(g!%cL1`NjZs4>A z3g`Wi+F<|fEr8g$w^;K(9GB=q?1zeh><7E0KohJ7q!(lcI1XUug5tu*Y6i$osNF1} zG>VeeEFj?x3hRBjPKy)-TxrB!|eu{i3RT~H9+w{JX~OEVQz@j{*MwDApd!q9|747DkngB736jh z2Blw6+=0>;I4ogiVWY8xKgbMp3^EI3Cdh1XS_H*~oxwMd-Jr4xT(+1);u5A8YkZ@* zVPCl!ivK}+v4sK1EKr(6jR(E|AiKe3Dk#iBZUW^qKOKmfpg2Uc55w$YNdAL~gX~Af zFmX^gg7U=yKb`;ZFaX5?tUL$V4Z?Q1;Pe7B1Fj#BJ3wk->X6wmF*uzMNsFNJ3mylc z{08&8IW)~DYk~7OUbB$ggRBn3#)iReDAWX(Ti`eV`4xmgc7rg84YJ=w2b^y~;RVtI zG7CiG!#LHH=>Fde!yxy9@wmz=79VJ@*Btw6uXha092=e@+wFzSPxqIhKV85AiI$HAU3iX zoDK3nw(v)`-$@6YMnH85$Q&4kn?Z#C(e=Rf;!1y@JOE99pu7Pp^TBl-l3j2!py7ee zhuMivgVcdASR6h{lUSVGl}sSjrzz83-$XL3I!)e}c+N zP?-sH1F{`3HaZQmA0&p3L2U$(Ss*h(W`pbir#}lw`3tH8K=lt;3=|JmkoE?)bOkUDsJ1eH&qb^)l(PoVt`Dmy^#LC4Ux{7#VBAUi;I!R$q*LE<2JkQ?FsJW!qh zVW>MmWfUkMfy!!7Sq`!b%*NjT0Joz-W`WEEnGLc7*-mseNFEeE;Pimm{{r<(AbkUn zn+Rc$o9&H0fy@G#2{IeqK5TqY+<@BWpfn23n{@1dBD)9T4ifv{PR1`mWh$s#1C=cx zGmy