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 0000000..6b70f96 Binary files /dev/null and b/src/main/resources/static/images/favicon.ico differ