diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..b3abea9
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,6 @@
+ .git
+ vendor
+ node_modules
+ storage/logs
+ storage/framework/cache/data
+ .env
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..12c51dc
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,64 @@
+stages:
+ - test
+ - build
+
+variables:
+ DOCKER_DRIVER: overlay2
+
+# 🔍 Étape tests (optionnelle mais recommandée)
+test:
+ stage: test
+ image: laravelsail/php84-composer
+ services:
+ - name: mysql:8.0
+ alias: mysql
+
+ variables:
+ MYSQL_ROOT_PASSWORD: root
+ MYSQL_DATABASE: hunting_api
+ MYSQL_USER: root
+ MYSQL_PASSWORD: root
+ DB_CONNECTION: mysql
+ DB_HOST: mysql
+ DB_PORT: 3306
+ DB_DATABASE: hunting_api
+ DB_USERNAME: root
+ DB_PASSWORD: root
+ APP_ENV: testing
+ APP_KEY: base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+
+ before_script:
+ - apt-get update && apt-get install -y git zip unzip
+ - cp .env .env.ci || true
+ - php artisan key:generate --force
+ - php artisan migrate --force
+
+ script:
+ - php artisan test
+
+# 🐳 Build + push image dans le registry GitLab
+docker-build-push:
+ stage: build
+ image: docker:24
+ services:
+ - docker:24-dind
+
+ variables:
+ DOCKER_TLS_CERTDIR: "/certs"
+ IMAGE_TAG: "$CI_REGISTRY_IMAGE:${CI_COMMIT_SHORT_SHA}"
+
+ before_script:
+ # Login au registry GitLab
+ - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
+
+ script:
+ # Build de l'image à partir du Dockerfile de la racine
+ - docker build -t "$IMAGE_TAG" .
+ # Tag 'latest' en plus (optionnel mais pratique)
+ - docker tag "$IMAGE_TAG" "$CI_REGISTRY_IMAGE:latest"
+ # Push des tags
+ - docker push "$IMAGE_TAG"
+ - docker push "$CI_REGISTRY_IMAGE:latest"
+
+ only:
+ - main
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..e27368d
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,31 @@
+# Dockerfile
+
+FROM laravelsail/php84-composer AS build
+
+WORKDIR /var/www/html
+
+# Copier le code
+COPY . .
+
+# Installer les dépendances PHP (prod)
+RUN composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
+
+# Build des assets si tu utilises Vite
+# RUN npm ci && npm run build
+
+# -----------------------------
+# Image finale (runtime)
+# -----------------------------
+FROM laravelsail/php84-composer
+
+WORKDIR /var/www/html
+
+COPY --from=build /var/www/html /var/www/html
+
+# Optimisations Laravel
+RUN php artisan config:cache \
+ && php artisan route:cache
+
+EXPOSE 80
+
+CMD ["php-fpm"]
diff --git a/compose.yaml b/compose.yaml
new file mode 100644
index 0000000..f7bdddb
--- /dev/null
+++ b/compose.yaml
@@ -0,0 +1,56 @@
+services:
+ laravel.test:
+ build:
+ context: "./vendor/laravel/sail/runtimes/8.4"
+ dockerfile: Dockerfile
+ args:
+ WWWGROUP: "${WWWGROUP}"
+ image: "sail-8.4/app"
+ extra_hosts:
+ - "host.docker.internal:host-gateway"
+ ports:
+ - "${APP_PORT:-80}:80"
+ - "${VITE_PORT:-5173}:${VITE_PORT:-5173}"
+ environment:
+ WWWUSER: "${WWWUSER}"
+ LARAVEL_SAIL: 1
+ XDEBUG_MODE: "${SAIL_XDEBUG_MODE:-off}"
+ XDEBUG_CONFIG: "${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}"
+ IGNITION_LOCAL_SITES_PATH: "${PWD}"
+ volumes:
+ - ".:/var/www/html"
+ networks:
+ - sail
+ depends_on:
+ - mysql
+ mysql:
+ image: "mysql/mysql-server:8.0"
+ ports:
+ - "${FORWARD_DB_PORT:-3306}:3306"
+ environment:
+ MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
+ MYSQL_ROOT_HOST: "%"
+ MYSQL_DATABASE: "${DB_DATABASE}"
+ MYSQL_USER: "${DB_USERNAME}"
+ MYSQL_PASSWORD: "${DB_PASSWORD}"
+ MYSQL_ALLOW_EMPTY_PASSWORD: 1
+ MYSQL_EXTRA_OPTIONS: "${MYSQL_EXTRA_OPTIONS:-}"
+ volumes:
+ - "sail-mysql:/var/lib/mysql"
+ - "./vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh"
+ networks:
+ - sail
+ healthcheck:
+ test:
+ - CMD
+ - mysqladmin
+ - ping
+ - "-p${DB_PASSWORD}"
+ retries: 3
+ timeout: 5s
+networks:
+ sail:
+ driver: bridge
+volumes:
+ sail-mysql:
+ driver: local
diff --git a/phpunit.xml b/phpunit.xml
index d703241..bbfcf81 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -23,8 +23,7 @@
-
-
+