Merge remote-tracking branch 'origin/master' into tonitch/feat/notifications
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
 | 
			
		||||
- 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
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ ./gradlew backend:run frontend:run --parallel
 | 
			
		||||
```
 | 
			
		||||
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.
 | 
			
		||||
**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) 
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
VOLUME /tmp
 | 
			
		||||
WORKDIR /backend
 | 
			
		||||
VOLUME /cdn
 | 
			
		||||
ENV SPRING_PROFILES_ACTIVE=prod
 | 
			
		||||
COPY build/libs/backend-0.0.1-SNAPSHOT.jar /app.jar
 | 
			
		||||
ENTRYPOINT ["java", "-jar", "/app.jar"]
 | 
			
		||||
# ENV SPRING_PROFILES_ACTIVE=prod
 | 
			
		||||
COPY --from=BUILD /backend/build/libs/Clyde-0.0.1-SNAPSHOT.jar /backend/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.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 { 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) {
 | 
			
		||||
	return await _rest(endPoint, {method: "GET"});
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user