From 59d8600867d5b6a364578159ef61b9b647a033b8 Mon Sep 17 00:00:00 2001 From: Ethar Al Aasmi Date: Thu, 25 Jul 2024 11:54:31 +0400 Subject: [PATCH] Added dockerfile and docker-compose --- .env | 8 +++++ Dockerfile | 29 ++++++++++++++++ docker-compose.yaml | 25 ++++++++++++++ pom.xml | 10 +++--- .../com/docker/rihal/RihalApplication.java | 14 ++++++-- target/classes/application.properties | 9 +++++ target/classes/templates/edit_user.html | 17 ++++++++++ target/classes/templates/index.html | 32 ++++++++++++++++++ target/classes/templates/new_user.html | 17 ++++++++++ target/maven-archiver/pom.properties | 3 ++ .../compile/default-compile/createdFiles.lst | 5 +++ .../compile/default-compile/inputFiles.lst | 5 +++ target/rihal-0.0.1-SNAPSHOT.jar.original | Bin 0 -> 8814 bytes 13 files changed, 166 insertions(+), 8 deletions(-) create mode 100644 .env create mode 100644 Dockerfile create mode 100644 docker-compose.yaml create mode 100644 target/classes/application.properties create mode 100644 target/classes/templates/edit_user.html create mode 100644 target/classes/templates/index.html create mode 100644 target/classes/templates/new_user.html create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/rihal-0.0.1-SNAPSHOT.jar.original diff --git a/.env b/.env new file mode 100644 index 0000000..f74a201 --- /dev/null +++ b/.env @@ -0,0 +1,8 @@ +SPRING_DATASOURCE_URL=jdbc:mysql://mysql-cont:3306/usersystem?useSSL=false&serverTimezone=UTC&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true +SPRING_DATASOURCE_USERNAME=root +SPRING_DATASOURCE_PASSWORD=root +SPRING_JPA_HIBERNATE_DDL_AUTO=update +SPRING_JPA_SHOW_SQL=true + +MYSQL_ROOT_PASSWORD=root +MYSQL_DATABASE=usersystem diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e648af4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# Use the Maven OpenJDK image as the base image +FROM maven:3.8.1-openjdk-17 AS build + +# Set the working directory +WORKDIR /app + +# Copy the pom.xml and the project source code +COPY pom.xml . +COPY src ./src +COPY .env . + +# Package the application +RUN mvn clean package -DskipTests + +# Use the official OpenJDK image to run the application +FROM openjdk:17-jdk-slim + +# Set the working directory +WORKDIR /app + +# Copy the packaged jar file from the build stage +COPY --from=build /app/target/rihal-0.0.1-SNAPSHOT.jar . +COPY --from=build /app/.env . + +# Expose the port the application runs on +EXPOSE 8080 + +# Run the application with .env variables +ENTRYPOINT ["sh", "-c", "java -jar rihal-0.0.1-SNAPSHOT.jar"] diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..51e068d --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,25 @@ +version: '3.8' + +services: + mysql: + image: mysql:8.0 + container_name: mysql-cont + env_file: + - .env + ports: + - "3307:3306" + volumes: + - db_data:/var/lib/mysql + + app: + build: . + container_name: userinfoapp + env_file: + - .env + ports: + - "8080:8080" + depends_on: + - mysql + +volumes: + db_data: diff --git a/pom.xml b/pom.xml index e74cc95..8d13919 100644 --- a/pom.xml +++ b/pom.xml @@ -42,21 +42,22 @@ org.springframework.boot spring-boot-starter-web - org.springframework.boot spring-boot-devtools runtime true - com.mysql mysql-connector-j runtime - - + + io.github.cdimascio + java-dotenv + 5.2.2 + @@ -67,5 +68,4 @@ - diff --git a/src/main/java/com/docker/rihal/RihalApplication.java b/src/main/java/com/docker/rihal/RihalApplication.java index 90af33a..eaa32f8 100644 --- a/src/main/java/com/docker/rihal/RihalApplication.java +++ b/src/main/java/com/docker/rihal/RihalApplication.java @@ -1,13 +1,21 @@ package com.docker.rihal; +import io.github.cdimascio.dotenv.Dotenv; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class RihalApplication { - public static void main(String[] args) { - SpringApplication.run(RihalApplication.class, args); - } + public static void main(String[] args) { + // Load environment variables from .env file + Dotenv dotenv = Dotenv.load(); + System.setProperty("SPRING_DATASOURCE_URL", dotenv.get("SPRING_DATASOURCE_URL")); + System.setProperty("SPRING_DATASOURCE_USERNAME", dotenv.get("SPRING_DATASOURCE_USERNAME")); + System.setProperty("SPRING_DATASOURCE_PASSWORD", dotenv.get("SPRING_DATASOURCE_PASSWORD")); + System.setProperty("SPRING_JPA_HIBERNATE_DDL_AUTO", dotenv.get("SPRING_JPA_HIBERNATE_DDL_AUTO")); + System.setProperty("SPRING_JPA_SHOW_SQL", dotenv.get("SPRING_JPA_SHOW_SQL")); + SpringApplication.run(RihalApplication.class, args); + } } diff --git a/target/classes/application.properties b/target/classes/application.properties new file mode 100644 index 0000000..9cc6243 --- /dev/null +++ b/target/classes/application.properties @@ -0,0 +1,9 @@ +spring.application.name=rihal +spring.datasource.url=${SPRING_DATASOURCE_URL} +spring.datasource.username=${SPRING_DATASOURCE_USERNAME} +spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + diff --git a/target/classes/templates/edit_user.html b/target/classes/templates/edit_user.html new file mode 100644 index 0000000..8346537 --- /dev/null +++ b/target/classes/templates/edit_user.html @@ -0,0 +1,17 @@ + + + + + Edit User + + +

Edit User

+
+ +
+ +
+ +
+ + diff --git a/target/classes/templates/index.html b/target/classes/templates/index.html new file mode 100644 index 0000000..437d263 --- /dev/null +++ b/target/classes/templates/index.html @@ -0,0 +1,32 @@ + + + + + User Management + + +

User Management

+Add New User + + + + + + + + + + + + + + + + + +
IDNameEmailActions
+ Edit + Delete +
+ + diff --git a/target/classes/templates/new_user.html b/target/classes/templates/new_user.html new file mode 100644 index 0000000..14e04e3 --- /dev/null +++ b/target/classes/templates/new_user.html @@ -0,0 +1,17 @@ + + + + + Add New User + + +

Add New User

+
+ +
+ +
+ +
+ + diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..c66596b --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=rihal +groupId=com.docker +version=0.0.1-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..6ea471a --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,5 @@ +com\docker\rihal\repositories\UserRepository.class +com\docker\rihal\services\UserService.class +com\docker\rihal\controllers\UserController.class +com\docker\rihal\RihalApplication.class +com\docker\rihal\models\User.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..330ecbb --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +C:\Users\EtharAlAasmi\TrainingChallenge\UserInfoStoreApp\src\main\java\com\docker\rihal\controllers\UserController.java +C:\Users\EtharAlAasmi\TrainingChallenge\UserInfoStoreApp\src\main\java\com\docker\rihal\models\User.java +C:\Users\EtharAlAasmi\TrainingChallenge\UserInfoStoreApp\src\main\java\com\docker\rihal\repositories\UserRepository.java +C:\Users\EtharAlAasmi\TrainingChallenge\UserInfoStoreApp\src\main\java\com\docker\rihal\RihalApplication.java +C:\Users\EtharAlAasmi\TrainingChallenge\UserInfoStoreApp\src\main\java\com\docker\rihal\services\UserService.java diff --git a/target/rihal-0.0.1-SNAPSHOT.jar.original b/target/rihal-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 0000000000000000000000000000000000000000..6d8cb450ba93101a5ceab769f213350772be1afa GIT binary patch literal 8814 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