diff --git a/.env b/.env new file mode 100644 index 0000000000000000000000000000000000000000..c2eea96f936ce3e2a9671bcd1288d9978d62a0ad --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +MYSQL_ROOT_PASSWORD=secret +MYSQL_DATABASE=cocagne_db +MYSQL_USER=jardin +MYSQL_PASSWORD=bestJardinier diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..f75f91389ffc2ee5902dd5dbe7f077337ad86fec --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +mysql_data/ \ No newline at end of file diff --git a/Back_end/.env b/Back_end/.env index f75c3c029e6f06ffb2064714fb66d423d28d1a5e..9d2678c241ed9aee7fa60ea58de56ef6bad11cdd 100644 --- a/Back_end/.env +++ b/Back_end/.env @@ -26,7 +26,7 @@ APP_SECRET=f13d33213c1f5d6ea888c6f867c0e42c # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" -DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=15&charset=utf8" +DATABASE_URL="mysql://symfony:symfony@database:3306/symfony_docker?serverVersion=15&charset=utf8" ###< doctrine/doctrine-bundle ### ###> symfony/messenger ### diff --git a/Back_end/compose.override.yaml b/Back_end/compose.override.yaml deleted file mode 100644 index fbefd500e5ca837100317515db3ba4346fe039fc..0000000000000000000000000000000000000000 --- a/Back_end/compose.override.yaml +++ /dev/null @@ -1,14 +0,0 @@ -version: '3' - -services: -###> doctrine/doctrine-bundle ### - database: - ports: - - "5432" -###< doctrine/doctrine-bundle ### - -###> symfony/mailer ### - mailer: - image: sj26/mailcatcher - ports: ["1025", "1080"] -###< symfony/mailer ### diff --git a/Back_end/compose.yaml b/Back_end/compose.yaml deleted file mode 100644 index 1067b9ca01fcf93ab3c17d2d3f6244a26e77b9f5..0000000000000000000000000000000000000000 --- a/Back_end/compose.yaml +++ /dev/null @@ -1,21 +0,0 @@ -version: '3' - -services: -###> doctrine/doctrine-bundle ### - database: - image: postgres:${POSTGRES_VERSION:-15}-alpine - environment: - POSTGRES_DB: ${POSTGRES_DB:-app} - # You should definitely change the password in production - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!} - POSTGRES_USER: ${POSTGRES_USER:-app} - volumes: - - database_data:/var/lib/postgresql/data:rw - # You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data! - # - ./docker/db/data:/var/lib/postgresql/data:rw -###< doctrine/doctrine-bundle ### - -volumes: -###> doctrine/doctrine-bundle ### - database_data: -###< doctrine/doctrine-bundle ### diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000000000000000000000000000000000000..106b4dd30c90caef0eddb4fddd20d2bdc1514a26 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,50 @@ +version: '3.8' + +services: + database: + container_name: database + image: mysql:8.0 + command: --default-authentication-plugin=mysql_native_password + env_file: + - .env + ports: + - '3306:3306' + volumes: + - ./docker/setup.sql:/docker-entrypoint-initdb.d/setup.sql + - ./mysql_data:/var/lib/mysql + + adminer: + container_name: adminer + image: adminer:latest + environment: + ADMINER_DEFAULT_SERVER: database + ports: + - '8081:8080' + depends_on: + - database + + php: + container_name: php + build: + context: ./docker/php + ports: + - '9000:9000' + volumes: + - ./Back_end:/var/www/symfony_docker + depends_on: + - database + + nginx: + container_name: nginx + image: nginx:stable-alpine + ports: + - '8080:80' + volumes: + - ./Back_end:/var/www/symfony_docker + - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf + depends_on: + - php + - database + +volumes: + mysql_data: \ No newline at end of file diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf new file mode 100644 index 0000000000000000000000000000000000000000..9fc2eb39a4123c48212e7248036acda3f5ea923b --- /dev/null +++ b/docker/nginx/default.conf @@ -0,0 +1,33 @@ +server { + + listen 80; + index index.php; + server_name localhost; + root /var/www/symfony_docker/public; + error_log /var/log/nginx/project_error.log; + access_log /var/log/nginx/project_access.log; + + location / { + try_files $uri /index.php$is_args$args; + } + + location ~ ^/index\\.php(/|$) { + fastcgi_pass php:9000; + fastcgi_split_path_info ^(.+\\.php)(/.*)$; + include fastcgi_params; + + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT $realpath_root; + + fastcgi_buffer_size 128k; + fastcgi_buffers 4 256k; + fastcgi_busy_buffers_size 256k; + + internal; + } + + location ~ \\.php$ { + return 404; + } + +} diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..4e653374d60cadff5b8ee8f87de964f160462847 --- /dev/null +++ b/docker/php/Dockerfile @@ -0,0 +1,16 @@ +FROM php:8.2-fpm + + +RUN apt update && apt install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip \ + && docker-php-ext-install intl opcache pdo pdo_mysql \ + && pecl install apcu \ + && docker-php-ext-enable apcu \ + && docker-php-ext-configure zip \ + && docker-php-ext-install zip + +WORKDIR /var/www/symfony_docker + +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +RUN curl -sS https://get.symfony.com/cli/installer | bash +RUN mv /root/.symfony5/bin/symfony /usr/local/bin/symfony \ No newline at end of file diff --git a/docker/setup.sql b/docker/setup.sql new file mode 100644 index 0000000000000000000000000000000000000000..392865106a929a378a07bc054ca5071fa7aa41c9 --- /dev/null +++ b/docker/setup.sql @@ -0,0 +1,346 @@ +-- MySQL Script generated by MySQL Workbench +-- Mon Jan 15 15:26:34 2024 +-- Model: New Model Version: 1.0 +-- MySQL Workbench Forward Engineering + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; + +-- ----------------------------------------------------- +-- Schema cocagne_db +-- ----------------------------------------------------- + +-- ----------------------------------------------------- +-- Schema cocagne_db +-- ----------------------------------------------------- +CREATE SCHEMA IF NOT EXISTS `cocagne_db` DEFAULT CHARACTER SET utf8 ; +USE `cocagne_db` ; + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Adherent` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Adherent` ( + `id` INT NOT NULL, + `raisonSociale` VARCHAR(100) NULL, + `civilite` VARCHAR(10) NULL, + `nom` VARCHAR(45) NULL, + `prenom` VARCHAR(45) NULL, + `adresse` VARCHAR(100) NULL, + `codePostal` VARCHAR(10) NULL, + `ville` VARCHAR(45) NULL, + `telephone` VARCHAR(20) NULL, + `mail` VARCHAR(45) NULL, + `telephone2` VARCHAR(20) NULL, + `telephone3` VARCHAR(20) NULL, + `profession` VARCHAR(45) NULL, + `dateNaissance` DATE NULL, + `password` VARCHAR(200) NULL, + `datePremiereAdhesion` DATE NULL, + `dispenseAdhesion` TINYINT NULL, + `adhesionAJour` TINYINT NULL, + PRIMARY KEY (`id`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Groupe` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Groupe` ( + `idGroupe` INT NOT NULL, + `nom` VARCHAR(45) NULL, + `droit1` VARCHAR(45) NULL, + `droit2` VARCHAR(45) NULL, + `droit3` VARCHAR(45) NULL, + PRIMARY KEY (`idGroupe`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Structure` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Structure` ( + `idStructure` INT NOT NULL, + `nom` VARCHAR(45) NULL, + `ville` VARCHAR(45) NULL, + `raisonSoc` VARCHAR(45) NULL, + `siege` VARCHAR(45) NULL, + `adresse` VARCHAR(45) NULL, + `telephone` VARCHAR(20) NULL, + `mail` VARCHAR(45) NULL, + `nomContact` VARCHAR(45) NULL, + `siteWeb` VARCHAR(100) NULL, + PRIMARY KEY (`idStructure`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Jour_calendrier` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Jour_calendrier` ( + `idJour_calendrier` INT NOT NULL, + `date` DATE NULL, + `livrable` TINYINT NULL, + `Structure_id` INT NOT NULL, + PRIMARY KEY (`idJour_calendrier`, `Structure_id`), + INDEX `fk_Jour_calendrier_Structure1_idx` (`Structure_id` ASC) VISIBLE, + CONSTRAINT `fk_Jour_calendrier_Structure1` + FOREIGN KEY (`Structure_id`) + REFERENCES `cocagne_db`.`Structure` (`idStructure`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Tournee` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Tournee` ( + `idTournee` INT NOT NULL, + `jourPreparation` DATE NULL, + `Jour_calendrier_id` INT NOT NULL, + PRIMARY KEY (`idTournee`, `Jour_calendrier_id`), + INDEX `fk_Tournee_Jour_calendrier1_idx` (`Jour_calendrier_id` ASC) VISIBLE, + CONSTRAINT `fk_Tournee_Jour_calendrier1` + FOREIGN KEY (`Jour_calendrier_id`) + REFERENCES `cocagne_db`.`Jour_calendrier` (`idJour_calendrier`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Point_de_depot` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Point_de_depot` ( + `idPoint_de_depot` INT NOT NULL, + `adresse` VARCHAR(100) NULL, + `codePostal` VARCHAR(10) NULL, + `ville` VARCHAR(45) NULL, + `telephone` VARCHAR(20) NULL, + `nomReferent` VARCHAR(45) NULL, + `mailReferent` VARCHAR(45) NULL, + `telReferent` VARCHAR(20) NULL, + `presentation` VARCHAR(300) NULL, + `photo` BLOB NULL, + `creneauLivraison` VARCHAR(45) NULL, + `creneauRecupPaniers` VARCHAR(45) NULL, + `Structure_id` INT NOT NULL, + PRIMARY KEY (`idPoint_de_depot`, `Structure_id`), + INDEX `fk_Point_de_depot_Structure1_idx` (`Structure_id` ASC) VISIBLE, + CONSTRAINT `fk_Point_de_depot_Structure1` + FOREIGN KEY (`Structure_id`) + REFERENCES `cocagne_db`.`Structure` (`idStructure`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Unite` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Unite` ( + `idUnite` INT NOT NULL, + `nom` VARCHAR(20) NULL, + `nbDecimal` INT NULL, + PRIMARY KEY (`idUnite`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Frequence_type` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Frequence_type` ( + `idFrequence_type` INT NOT NULL, + `debut` DATETIME NULL, + `fin` DATETIME NULL, + `nom` VARCHAR(45) NULL, + PRIMARY KEY (`idFrequence_type`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Panier` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Panier` ( + `idPanier` INT NOT NULL, + `nom` VARCHAR(45) NULL, + `photo` BLOB NULL, + `description` VARCHAR(200) NULL, + `Unite_idUnite` INT NOT NULL, + `Frequence_type_id` INT NOT NULL, + PRIMARY KEY (`idPanier`, `Unite_idUnite`, `Frequence_type_id`), + INDEX `fk_Panier_Unite1_idx` (`Unite_idUnite` ASC) VISIBLE, + INDEX `fk_Panier_Frequence_type1_idx` (`Frequence_type_id` ASC) VISIBLE, + CONSTRAINT `fk_Panier_Unite1` + FOREIGN KEY (`Unite_idUnite`) + REFERENCES `cocagne_db`.`Unite` (`idUnite`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Panier_Frequence_type1` + FOREIGN KEY (`Frequence_type_id`) + REFERENCES `cocagne_db`.`Frequence_type` (`idFrequence_type`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`periode` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`periode` ( + `idperiode` INT NOT NULL, + `debut` DATE NULL, + `fin` DATE NULL, + PRIMARY KEY (`idperiode`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Abonnement` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Abonnement` ( + `idAbonnement` INT NOT NULL, + `Panier_idPanier` INT NOT NULL, + PRIMARY KEY (`idAbonnement`, `Panier_idPanier`), + INDEX `fk_Abonnement_Panier1_idx` (`Panier_idPanier` ASC) VISIBLE, + CONSTRAINT `fk_Abonnement_Panier1` + FOREIGN KEY (`Panier_idPanier`) + REFERENCES `cocagne_db`.`Panier` (`idPanier`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Adherent_souscrit_Abonnement` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Adherent_souscrit_Abonnement` ( + `Adherent_id` INT NOT NULL, + `Abonnement_idAbonnement` INT NOT NULL, + PRIMARY KEY (`Adherent_id`, `Abonnement_idAbonnement`), + INDEX `fk_Adherent_has_Abonnement_Abonnement1_idx` (`Abonnement_idAbonnement` ASC) VISIBLE, + INDEX `fk_Adherent_has_Abonnement_Adherent1_idx` (`Adherent_id` ASC) VISIBLE, + CONSTRAINT `fk_Adherent_has_Abonnement_Adherent1` + FOREIGN KEY (`Adherent_id`) + REFERENCES `cocagne_db`.`Adherent` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Adherent_has_Abonnement_Abonnement1` + FOREIGN KEY (`Abonnement_idAbonnement`) + REFERENCES `cocagne_db`.`Abonnement` (`idAbonnement`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Ordre_Point_de_depot_Tournee` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Ordre_Point_de_depot_Tournee` ( + `Point_de_depot_id` INT NOT NULL, + `Tournee_idTournee` INT NOT NULL, + `numOrdre` INT NULL, + PRIMARY KEY (`Point_de_depot_id`, `Tournee_idTournee`), + INDEX `fk_Point_de_depot_has_Tournee_Tournee1_idx` (`Tournee_idTournee` ASC) VISIBLE, + INDEX `fk_Point_de_depot_has_Tournee_Point_de_depot1_idx` (`Point_de_depot_id` ASC) VISIBLE, + CONSTRAINT `fk_Point_de_depot_has_Tournee_Point_de_depot1` + FOREIGN KEY (`Point_de_depot_id`) + REFERENCES `cocagne_db`.`Point_de_depot` (`idPoint_de_depot`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Point_de_depot_has_Tournee_Tournee1` + FOREIGN KEY (`Tournee_idTournee`) + REFERENCES `cocagne_db`.`Tournee` (`idTournee`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Adherent_Appartient_Groupe` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Adherent_Appartient_Groupe` ( + `Adherent_id` INT NOT NULL, + `Groupe_id` INT NOT NULL, + PRIMARY KEY (`Adherent_id`, `Groupe_id`), + INDEX `fk_Adherent_has_Groupe_Groupe1_idx` (`Groupe_id` ASC) VISIBLE, + INDEX `fk_Adherent_has_Groupe_Adherent1_idx` (`Adherent_id` ASC) VISIBLE, + CONSTRAINT `fk_Adherent_has_Groupe_Adherent1` + FOREIGN KEY (`Adherent_id`) + REFERENCES `cocagne_db`.`Adherent` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Adherent_has_Groupe_Groupe1` + FOREIGN KEY (`Groupe_id`) + REFERENCES `cocagne_db`.`Groupe` (`idGroupe`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Livraison` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Livraison` ( + `idLivraison` INT NOT NULL, + `Tournee_idTournee` INT NOT NULL, + `Abonnement_id` INT NOT NULL, + `Point_de_depot_id` INT NOT NULL, + PRIMARY KEY (`idLivraison`, `Tournee_idTournee`, `Abonnement_id`, `Point_de_depot_id`), + INDEX `fk_Livraison_Tournee1_idx` (`Tournee_idTournee` ASC) VISIBLE, + INDEX `fk_Livraison_Abonnement1_idx` (`Abonnement_id` ASC) VISIBLE, + INDEX `fk_Livraison_Point_de_depot1_idx` (`Point_de_depot_id` ASC) VISIBLE, + CONSTRAINT `fk_Livraison_Tournee1` + FOREIGN KEY (`Tournee_idTournee`) + REFERENCES `cocagne_db`.`Tournee` (`idTournee`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Livraison_Abonnement1` + FOREIGN KEY (`Abonnement_id`) + REFERENCES `cocagne_db`.`Abonnement` (`idAbonnement`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Livraison_Point_de_depot1` + FOREIGN KEY (`Point_de_depot_id`) + REFERENCES `cocagne_db`.`Point_de_depot` (`idPoint_de_depot`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `cocagne_db`.`Adhesion` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `cocagne_db`.`Adhesion` ( + `periode_id` INT NOT NULL, + `Structure_id` INT NOT NULL, + `Adherent_id` INT NOT NULL, + `type` VARCHAR(45) NULL, + `prix` FLOAT NULL, + `dateCharniere` DATE NULL, + `active` TINYINT NULL, + PRIMARY KEY (`periode_id`, `Structure_id`, `Adherent_id`), + INDEX `fk_Adhesion_Structure1_idx` (`Structure_id` ASC) VISIBLE, + INDEX `fk_Adhesion_Adherent1_idx` (`Adherent_id` ASC) VISIBLE, + CONSTRAINT `fk_Adhesion_periode1` + FOREIGN KEY (`periode_id`) + REFERENCES `cocagne_db`.`periode` (`idperiode`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Adhesion_Structure1` + FOREIGN KEY (`Structure_id`) + REFERENCES `cocagne_db`.`Structure` (`idStructure`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_Adhesion_Adherent1` + FOREIGN KEY (`Adherent_id`) + REFERENCES `cocagne_db`.`Adherent` (`id`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;