Merge branch 'master' into Leo/masterRegNo
This commit is contained in:
		
							
								
								
									
										29
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								README.md
									
									
									
									
									
								
							| @ -9,10 +9,33 @@ Projet du groupe 01: | |||||||
| - William Karpinski: Extension gestion des horaires | - William Karpinski: Extension gestion des horaires | ||||||
| - Léo Moulin: Extension inscription des étudiants | - Léo Moulin: Extension inscription des étudiants | ||||||
|  |  | ||||||
|  | ## Running | ||||||
|  |  | ||||||
|  | Le projet peut être lancé grace à docker compose. | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | $ docker compose up  | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Dans le cas ou vous modifiers des fichiers, pour éviter que les images de docker soient recrées avec les changement | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | $ docker compose up --force-recreate --build | ||||||
|  | ``` | ||||||
|  |  | ||||||
| ## Dévelopement | ## Dévelopement | ||||||
|  |  | ||||||
| ``` | Dans le cas ou vous êtes dans une phase de développement, il est plus simple d'utiliser gradle pour lancer le backend et frontend dans un mode de développement. | ||||||
| $ ./gradlew backend:run frontend:run --parallel | **Attention**: Ce mode n'est pas fait pour être utilisé en production! | ||||||
| ``` |  | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | $ ./gradlew run --parallel | ||||||
|  | ``` | ||||||
| permet de lancer le frontend sur [http://localhost:5173](http://localhost:5173) ansi que le frontend sur [http://localhost:8080](http://localhost:8080)  | permet de lancer le frontend sur [http://localhost:5173](http://localhost:5173) ansi que le frontend sur [http://localhost:8080](http://localhost:8080)  | ||||||
|  |  | ||||||
|  | Ceci requière également docker pour lancer une instance de postgresql pris en charge par spring. | ||||||
|  |  | ||||||
|  | Il est possible de se passer entièrement de docker en supprimant la dépendance dans le fichier `backend/build.gradle.kts`: ~~`developmentOnly("org.springframework.boot:spring-boot-docker-compose")`~~ | ||||||
|  | Il est alors nécéssaire d'avoir une instance de postgresql tournant sur `localhost:5432` avec une table `clyde`, utilisateur: `devel` et password: `devel` | ||||||
|  | (cette configuration peut également être changée dans le fichier resources/application.properties de spring) | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,6 +1,15 @@ | |||||||
|  | ## Building phase | ||||||
|  | FROM gradle:jdk21-alpine AS BUILD | ||||||
|  | WORKDIR /backend | ||||||
|  |    | ||||||
|  | COPY . . | ||||||
|  | RUN gradle build -x test | ||||||
|  |  | ||||||
|  | ## Running Phase | ||||||
| FROM eclipse-temurin:21-jdk-alpine | FROM eclipse-temurin:21-jdk-alpine | ||||||
| VOLUME /tmp | WORKDIR /backend | ||||||
| VOLUME /cdn | VOLUME /cdn | ||||||
| ENV SPRING_PROFILES_ACTIVE=prod | # ENV SPRING_PROFILES_ACTIVE=prod | ||||||
| COPY build/libs/backend-0.0.1-SNAPSHOT.jar /app.jar | COPY --from=BUILD /backend/build/libs/Clyde-0.0.1-SNAPSHOT.jar /backend/app.jar | ||||||
| ENTRYPOINT ["java", "-jar", "/app.jar"] | EXPOSE 8080 | ||||||
|  | ENTRYPOINT ["java", "-jar", "/backend/app.jar"] | ||||||
|  | |||||||
							
								
								
									
										13
									
								
								backend/settings.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								backend/settings.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | /* | ||||||
|  |  * This file was generated by the Gradle 'init' task. | ||||||
|  |  * | ||||||
|  |  * The settings file is used to specify which projects to include in your build. | ||||||
|  |  * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.6/userguide/multi_project_builds.html in the Gradle documentation. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | plugins { | ||||||
|  |     // Apply the foojay-resolver plugin to allow automatic download of JDKs | ||||||
|  |     id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | rootProject.name = "Clyde" | ||||||
| @ -1,37 +0,0 @@ | |||||||
| package ovh.herisson.Clyde; |  | ||||||
|  |  | ||||||
| import javax.sql.DataSource; |  | ||||||
|  |  | ||||||
| import org.springframework.context.annotation.Bean; |  | ||||||
| import org.springframework.context.annotation.Configuration; |  | ||||||
| import org.springframework.context.annotation.Profile; |  | ||||||
| import org.springframework.jdbc.datasource.DriverManagerDataSource; |  | ||||||
| import org.springframework.scheduling.annotation.EnableScheduling; |  | ||||||
|  |  | ||||||
| @Configuration |  | ||||||
| @EnableScheduling |  | ||||||
| public class JdbcConfig { |  | ||||||
|  |  | ||||||
| 	@Bean |  | ||||||
| 	@Profile("!prod") |  | ||||||
| 	public DataSource psqlSource(){ |  | ||||||
| 		DriverManagerDataSource source = new DriverManagerDataSource(); |  | ||||||
| 		source.setDriverClassName("org.postgresql.Driver"); |  | ||||||
| 		source.setUrl("jdbc:postgresql://localhost:5442/clyde"); |  | ||||||
| 		source.setUsername("devel"); |  | ||||||
| 		source.setPassword("devel"); |  | ||||||
|  |  | ||||||
| 		return source; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	@Bean |  | ||||||
| 	@Profile("prod") |  | ||||||
| 	public DataSource psqlSourceProd(){ |  | ||||||
| 		DriverManagerDataSource source = new DriverManagerDataSource(); |  | ||||||
| 		source.setDriverClassName("org.postgresql.Driver"); |  | ||||||
| 		source.setUrl("jdbc:postgresql:clyde?socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg&socketFactoryArg=/var/run/postgresql/.s.PGSQL.5432"); |  | ||||||
| 		source.setUsername("clyde"); |  | ||||||
|  |  | ||||||
| 		return source; |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @ -1,3 +1,12 @@ | |||||||
| spring.jpa.hibernate.ddl-auto=create-drop | spring.jpa.hibernate.ddl-auto=create-drop | ||||||
| spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect | spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect | ||||||
| spring.sql.init.mode=always | spring.sql.init.mode=always | ||||||
|  |  | ||||||
|  | # spring.datasource.url=jdbc:postgresql://localhost:5442/clyde | ||||||
|  | spring.datasource.url=jdbc:postgresql://db:5432/clyde | ||||||
|  | spring.datasource.username=devel | ||||||
|  | spring.datasource.password=devel | ||||||
|  |  | ||||||
|  | # spring.config.activate.on-profile=prod | ||||||
|  | # spring.datasource.url=jdbc:postgresql:clyde?socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg&socketFactoryArg=/var/run/postgresql/.s.PGSQL.5432 | ||||||
|  | # spring.datasource.username=clyde | ||||||
|  | |||||||
							
								
								
									
										29
									
								
								compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								compose.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | services:  | ||||||
|  |   db: | ||||||
|  |     image: 'postgres:16' | ||||||
|  |     environment: | ||||||
|  |       - 'POSTGRES_DB=clyde' | ||||||
|  |       - 'POSTGRES_USER=devel' | ||||||
|  |       - 'POSTGRES_PASSWORD=devel' | ||||||
|  |     # Uncomment this to allow connections to the db from outside the container | ||||||
|  |     # ports:  | ||||||
|  |     #   - '5442:5432' | ||||||
|  |   back: | ||||||
|  |     build: backend/. | ||||||
|  |     ports: | ||||||
|  |       - "8080:8080" | ||||||
|  |     volumes: | ||||||
|  |       - cdn:/backend/cdn | ||||||
|  |     ulimits: | ||||||
|  |       nofile: | ||||||
|  |         soft: 65536 | ||||||
|  |         hard: 65536 | ||||||
|  |   front: | ||||||
|  |     build: frontend/. | ||||||
|  |     volumes: | ||||||
|  |       - cdn:/app/front/dist/cdn | ||||||
|  |     ports: | ||||||
|  |       - "8000:8080" | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   cdn: | ||||||
							
								
								
									
										11
									
								
								frontend/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								frontend/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | # https://v2.vuejs.org/v2/cookbook/dockerize-vuejs-app | ||||||
|  | FROM node:lts-alpine | ||||||
|  | RUN npm install -g http-server | ||||||
|  | WORKDIR /app/front | ||||||
|  | COPY package*.json ./ | ||||||
|  | RUN npm install | ||||||
|  | COPY . . | ||||||
|  | ENV VITE_CLYDE_MODE=container | ||||||
|  | RUN npm run build | ||||||
|  | EXPOSE 8080 | ||||||
|  | CMD [ "http-server", "dist" ] | ||||||
| @ -1,7 +1,7 @@ | |||||||
| import { getCookie } from '../utils.js' | import { getCookie } from '../utils.js' | ||||||
| import { toast } from 'vue3-toastify' | import { toast } from 'vue3-toastify' | ||||||
|  |  | ||||||
| const restURL = import.meta.env.PROD ? "https://clyde.herisson.ovh/api" : "http://localhost:8080" | const restURL = import.meta.env.VITE_CLYDE_MODE === 'container' ? "http://localhost:8080": import.meta.env.DEV ? "http://localhost:8080" : "https://clyde.herisson.ovh/api" | ||||||
|  |  | ||||||
| export async function restGet(endPoint) { | export async function restGet(endPoint) { | ||||||
| 	return await _rest(endPoint, {method: "GET"}); | 	return await _rest(endPoint, {method: "GET"}); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user