From a54308f71001ab308004670bee66cd7282686f37 Mon Sep 17 00:00:00 2001 From: Oskar-Mikael Date: Sun, 31 Aug 2025 02:02:30 +0200 Subject: [PATCH] Fix deploy --- .gitea/workflows/deploy.yml | 6 +++--- Dockerfile.prod | 43 ++++++++++++++++++++++++++----------- docker-compose.prod.yml | 7 +++--- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 5a191b9..6560abc 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -54,6 +54,6 @@ jobs: script: | cd /var/www/scheduler git pull origin master - docker-compose -f docker-compose.prod.yml pull - docker-compose -f docker-compose.prod.yml up -d - docker-compose -f docker-compose.prod.yml run --rm app php artisan migrate --force + /usr/lib/docker/cli-plugins/docker-compose -f docker-compose.prod.yml pull + /usr/lib/docker/cli-plugins/docker-compose -f docker-compose.prod.yml up -d + /usr/lib/docker/cli-plugins/docker-compose -f docker-compose.prod.yml run --rm app php artisan migrate --force diff --git a/Dockerfile.prod b/Dockerfile.prod index b34853e..e295b3f 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -1,9 +1,11 @@ -FROM php:8.4-fpm +# ---------------------------- +# Stage 1: PHP + Composer +# ---------------------------- +FROM php:8.4-fpm AS php-base -# Set working dir WORKDIR /var/www/html -# Install system deps +# Install system dependencies and PHP extensions RUN apt-get update && apt-get install -y \ git curl libpng-dev libonig-dev libxml2-dev zip unzip \ && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd @@ -14,30 +16,47 @@ COPY --from=composer:2 /usr/bin/composer /usr/bin/composer # Copy app code COPY . . -# Install PHP deps (no dev) +# Install PHP dependencies (no dev) RUN composer install --no-dev --optimize-autoloader --no-interaction -# Node build (optional if you need assets) + +# ---------------------------- +# Stage 2: Node build +# ---------------------------- FROM node:20 AS frontend + WORKDIR /app -# Copy Node dependencies and install +# Copy only package files and install Node dependencies COPY package*.json ./ RUN npm ci -# Copy app code +# Copy the rest of the app code COPY . . -# Copy vendor from composer stage -COPY --from=0 /var/www/html/vendor ./vendor +# Copy vendor from PHP stage (needed if assets reference PHP files) +COPY --from=php-base /var/www/html/vendor ./vendor # Build assets RUN npm run build -# Copy built assets into PHP image -FROM php:8.4-fpm + +# ---------------------------- +# Stage 3: Final production image +# ---------------------------- +FROM php:8.4-fpm AS final + WORKDIR /var/www/html -COPY --from=0 /var/www/html . + +# Install system deps and PHP extensions in the final image +RUN apt-get update && apt-get install -y \ + git curl libpng-dev libonig-dev libxml2-dev zip unzip \ + && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd + +# Copy PHP code + vendor +COPY --from=php-base /var/www/html . + +# Copy built frontend assets COPY --from=frontend /app/public ./public # Fix permissions for Laravel diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index f4ab35c..e2a10e5 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,16 +1,17 @@ services: app: image: git.oskarmikael.com/oskarb/scheduler:latest - env_file: - - .env volumes: - storage:/var/www/html/storage - bootstrap_cache:/var/www/html/bootstrap/cache + - .env:/var/www/html/.env + networks: + - laravel nginx: image: nginx:1.27 volumes: - - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro + - ../nginx.conf:/etc/nginx/conf.d/default.conf:ro ports: - '${APP_PORT:-80}:80' depends_on: