This project focuses on managing an employee database through a user-friendly interface. It includes functionalities to:
- Display a list of employees.
- Add new employees to the database.
- Update existing employee information.
- Delete employees from the database.
The project also incorporates cloud deployment using Alibaba Cloud. Infrastructure is provisioned and managed using Terraform, enabling scalable and efficient deployment of the application.
- SpringBoot
- SpringJPA
- Thymeleaf
- MySQL
- Terraform
- Dockerfile
- Docekr Compose
- provider.tf
- vpc.tf
- key.tf
- bastion-sg.t
- bastion.tf
- employee-sg.tf
- employee.tf
- employee.tpl
- mysql-sg.tf
- mysql.tf
- mysql.tpl
- load-balancer.tf
- Controllers folder
- Entities folder
- DAO folder
- Services folder
- employee-form.html
- list-employees.html
<dependencies>
<!-- thymeleaf engin for html -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- spring mvc includs RES support -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- dev tool for reload server automatic when change code -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- mysql deriver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
</dependencies>
spring.datasource.url=jdbc:mysql://mydb:3306/demo
spring.datasource.username=demouser
spring.datasource.password=demopass
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
FROM openjdk:17
WORKDIR /
ADD target/spring-boot-thymeleaf-crud-db-project-0.0.1-SNAPSHOT.jar /
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/spring-boot-thymeleaf-crud-db-project-0.0.1-SNAPSHOT.jar"]
version: "3"
services:
server:
container_name: app-container
image: app-image
build: .
restart: always
ports:
- 9091:8080
depends_on:
- mydb
mydb:
container_name: mydb
platform: linux/arm64/v8
image: mysql:latest
restart: always
ports:
- 3313:3306
environment:
MYSQL_DATABASE: demo
MYSQL_USER: demouser
MYSQL_PASSWORD: demopass
MYSQL_ROOT_PASSWORD: demopass