Attempt deploy
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s
Deploy App / build-and-deploy (push) Has been cancelled

This commit is contained in:
2025-08-31 00:04:56 +02:00
parent 7ba0cfaad9
commit 1e63877a2f
3 changed files with 122 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
name: Deploy App
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: docker
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Gitea Registry
run: |
echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login git.oskarmikael.com -u ${{ secrets.REGISTRY_USER }} --password-stdin
- name: Build and Push Docker image
run: |
IMAGE=git.oskarmikael.com/oskarb/scheduler:latest
docker buildx build \
-f Dockerfile \
--platform linux/amd64 \
-t $IMAGE \
--push .
- name: Run migrations
run: |
docker-compose -f docker-compose.prod.yml run --rm app php artisan migrate --force
- name: Install Composer Dependencies
run: |
docker-compose -f docker-compose.prod.yml run --rm composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Install Node Dependencies
run: |
docker-compose -f docker-compose.prod.yml run --rm app npm install
- name: Build assets
run: |
docker-compose -f docker-compose.prod.yml run --rm app npm run build
- name: Deploy to LXC
uses: appleboy/ssh-action@v0.1.9
with:
host: ${{ secrets.PROD_HOST }}
username: ${{ secrets.PROD_USER }}
key: ${{ secrets.PROD_SSH_KEY }}
port: 22
script: |
cd /var/www/scheduler
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d

37
Dockerfile.prod Normal file
View File

@@ -0,0 +1,37 @@
FROM php:8.4-fpm
# Set working dir
WORKDIR /var/www/html
# Install system deps
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
# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# Copy app code
COPY . .
# Install PHP deps (no dev)
RUN composer install --no-dev --optimize-autoloader --no-interaction
# Node build (optional if you need assets)
FROM node:20 AS frontend
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Copy built assets into PHP image
FROM php:8.4-fpm
WORKDIR /var/www/html
COPY --from=0 /var/www/html .
COPY --from=frontend /app/public ./public
# Fix permissions for Laravel
RUN chown -R www-data:www-data storage bootstrap/cache
CMD ["php-fpm"]

28
docker-compose.prod.yml Normal file
View File

@@ -0,0 +1,28 @@
version: '3.9'
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
nginx:
image: nginx:1.27
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- '${APP_PORT:-80}:80'
depends_on:
- app
networks:
- laravel
networks:
laravel:
driver: bridge
volumes:
storage:
bootstrap_cache: