Add relevant files

This commit is contained in:
Javier Feliz 2025-07-17 11:34:23 -04:00
commit 6ce011893f
4 changed files with 124 additions and 0 deletions

35
.dockerignore Normal file
View File

@ -0,0 +1,35 @@
.env
.env.example
.git
.gitignore
node_modules
/public/hot
/public/storage
/storage/*.key
# Logs and cache
*.log
/storage/logs/*
/storage/framework/cache/*
/storage/framework/sessions/*
/storage/framework/testing/*
/storage/framework/views/*
/storage/app/public/*
/storage/app/private/*
/bootstrap/cache/*.php
.DS_Store
Thumbs.db
.idea
.vscode
*.swp
# Docker itself
docker-compose.yml
Dockerfile
.dockerignore
/database/*.sqlite
/database/*.db

52
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: Build & Push Docker Image to Registry
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Set up PHP with Composer
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
tools: composer:v2
- name: Install PHP dependencies
run: composer install --no-interaction --prefer-dist --optimize-autoloader
- name: Install JS dependencies and build assets
run: |
npm ci
npm run build
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Gitea Registry
uses: docker/login-action@v3
with:
registry: gitgud.foo
username: docker_registry_pusher
password: ${{ secrets.DOCKER_USER_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ${{ github.workspace }}
file: ${{ github.workspace }}/Dockerfile
push: true
tags: |
gitgud.foo/thegrind/flowtodo:latest
gitgud.foo/thegrind/flowtodo:${{ github.event.release.tag_name }}

4
Dockerfile Normal file
View File

@ -0,0 +1,4 @@
FROM gitgud.foo/thegrind/laravel-base:latest
# Get the app in there
COPY . /app

33
Makefile Normal file
View File

@ -0,0 +1,33 @@
IMAGE_NAME = laravel-app
CONTAINER_NAME = laravel-app
PORT = 8889
VERSION = "latest"
.PHONY: build run rebuild
# Make sure to get set up with octane and frankenPHP
# since that's what the base docker image expects
setup:
composer require laravel/octane
php artisan octane:install --server=frankenphp
# Build the Docker image
build:
npm run build
docker build -t $(IMAGE_NAME) .
# Run the container
run:
docker run -it --rm -p $(PORT):8000 -e APP_DEBUG=true --name $(CONTAINER_NAME) $(IMAGE_NAME)
# Rebuild (force rebuild without cache)
rebuild:
docker build --no-cache -t $(IMAGE_NAME) .
docker-publish:
docker image tag flowtodo:latest gitgud.foo/thegrind/flowtodo:$(VERSION)
docker push gitgud.foo/thegrind/flowtodo:$(VERSION)
test-remote-image:
docker pull gitgud.foo/thegrind/flowtodo:latest
docker run --rm -p 8889:8000 gitgud.foo/thegrind/flowtodo:latest