From 6ce011893fdb5a41becdb80fa6b6e11f0e76f1b2 Mon Sep 17 00:00:00 2001 From: Javier Feliz Date: Thu, 17 Jul 2025 11:34:23 -0400 Subject: [PATCH] Add relevant files --- .dockerignore | 35 +++++++++++++++++++++++++ .github/workflows/build.yml | 52 +++++++++++++++++++++++++++++++++++++ Dockerfile | 4 +++ Makefile | 33 +++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/build.yml create mode 100644 Dockerfile create mode 100644 Makefile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..58c8350 --- /dev/null +++ b/.dockerignore @@ -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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..7e7a755 --- /dev/null +++ b/.github/workflows/build.yml @@ -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 }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4a66b30 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM gitgud.foo/thegrind/laravel-base:latest + +# Get the app in there +COPY . /app \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b128833 --- /dev/null +++ b/Makefile @@ -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