diff --git a/.env.example b/.env.example index 8e70f2f..408cc20 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,11 @@ +GIT_REPO= +GIT_TOKEN= + APP_NAME=Laravel APP_ENV=local APP_KEY= APP_DEBUG=true -APP_URL=http://localhost +APP_URL=http://localhost:8000 APP_LOCALE=en APP_FALLBACK_LOCALE=en @@ -20,18 +23,19 @@ LOG_STACK=single LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug -DB_CONNECTION=mariadb -DB_HOST=127.0.0.1 +DB_CONNECTION=mysql +DB_HOST=mariadb DB_PORT=3306 -DB_DATABASE=sae_back +DB_DATABASE=laravel DB_USERNAME=root -DB_PASSWORD= +DB_PASSWORD=root SESSION_DRIVER=database SESSION_LIFETIME=120 SESSION_ENCRYPT=false SESSION_PATH=/ -SESSION_DOMAIN=null +SESSION_DOMAIN=localhost +SESSION_SECURE_COOKIE=false BROADCAST_CONNECTION=log FILESYSTEM_DISK=local @@ -63,3 +67,5 @@ AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false VITE_APP_NAME="${APP_NAME}" + +SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1,localhost:8000 diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 2f68456..0000000 --- a/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM php:8.4-fpm - -RUN apt-get update && apt-get install -y \ - git unzip libzip-dev libpng-dev libonig-dev \ - && docker-php-ext-install pdo_mysql zip - -COPY --from=composer:2 /usr/bin/composer /usr/bin/composer - -WORKDIR /var/www - -COPY . . - -RUN composer install --no-dev --optimize-autoloader diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 0ea0115..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -services: - laravel: - build: . - container_name: laravel-app - volumes: - - .:/var/www - ports: - - "8000:8000" - depends_on: - - mariadb - command: php artisan serve --host=0.0.0.0 --port=8000 - - mariadb: - image: mariadb:latest - container_name: mariadb - environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: laravel - volumes: - - db_data:/var/lib/mysql - -volumes: - db_data: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..0693abc --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,46 @@ +version: "3.8" + +services: + php: + build: + context: . + dockerfile: ./php/Dockerfile + container_name: app-php + volumes: + - ../:/var/www/app + environment: + - GIT_TOKEN=${GIT_TOKEN} + - GIT_REPO=${GIT_REPO} + depends_on: + - mariadb + + + nginx: + image: nginx + container_name: app-nginx + volumes: + - ../:/var/www/app + - ./nginx/default.conf:/etc/nginx/conf.d/default.conf + ports: + - "80:80" + depends_on: + - php + + mariadb: + image: mariadb:latest + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: laravel + ports: + - "3306:3306" + volumes: + - dbdata:/var/lib/mysql + +volumes: + dbdata: + +networks: + default: + ipam: + config: + - subnet: 192.168.200.0/24 diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..74d5629 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +APP_DIR=/var/www/app + +# Vérifie si le repo existe +if [ ! -d "$APP_DIR/.git" ]; then + echo "📥 Aucun projet trouvé. Clonage..." + git clone https://oauth2:${GIT_TOKEN}@${GIT_REPO} $APP_DIR +else + echo "🔄 Projet existant. Pull..." + cd $APP_DIR + git pull +fi + +cd $APP_DIR + +# Permissions sur storage et cache +mkdir -p storage bootstrap/cache +chown -R www-data:www-data storage bootstrap/cache +chmod -R 775 storage bootstrap/cache + +# Composer & artisan +composer install --no-interaction --prefer-dist +php artisan key:generate --force +php artisan migrate --force +php artisan config:cache + +exec php-fpm diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf new file mode 100644 index 0000000..a9d21ff --- /dev/null +++ b/docker/nginx/default.conf @@ -0,0 +1,16 @@ +server { + listen 80; + root /var/www/app/public; + + index index.php index.html; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + fastcgi_pass php:9000; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } +} diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile new file mode 100644 index 0000000..05b1c97 --- /dev/null +++ b/docker/php/Dockerfile @@ -0,0 +1,19 @@ +FROM php:8.4-fpm + +# Install dependencies +RUN apt-get update && apt-get install -y \ + git unzip libzip-dev libpng-dev libonig-dev \ + && docker-php-ext-install pdo_mysql zip + +# Install composer +COPY --from=composer:2 /usr/bin/composer /usr/bin/composer + +# Copy entrypoint +COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh + +# Working directory +WORKDIR /var/www/app + +ENTRYPOINT ["entrypoint.sh"] +CMD ["php-fpm"]