Attempt deploy
This commit is contained in:
57
.gitea/workflows/deploy.yml
Normal file
57
.gitea/workflows/deploy.yml
Normal 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
37
Dockerfile.prod
Normal 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
28
docker-compose.prod.yml
Normal 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:
|
||||||
Reference in New Issue
Block a user