Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 131 additions & 0 deletions .github/workflows/docker-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
name: Docker Deployment Tests

on:
push:
branches: [ main, develop ]
paths:
- 'docker/**'
- 'Dockerfile'
- '.env.example'
- 'docker-compose.yml'
pull_request:
branches: [ main, develop ]
paths:
- 'docker/**'
- 'Dockerfile'
- '.env.example'
- 'docker-compose.yml'

jobs:
docker-config-tests:
name: Docker Configuration Tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, dom, filter, gd, json, zip, yaml

- name: Install Composer dependencies
run: composer install --prefer-dist --no-progress --no-suggest

- name: Run Docker Configuration Tests
run: php artisan test tests/Unit/DockerConfigurationTest.php --verbose

docker-build-test:
name: Docker Build Test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Test Docker Build
run: |
docker build -f docker/Dockerfile -t nullfake-test .
docker images nullfake-test

- name: Test Docker Compose Configuration
run: |
cp .env.example .env
docker-compose -f docker/docker-compose.yml config

docker-integration-test:
name: Docker Integration Test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Create environment file
run: |
cp .env.example .env
# Set minimal configuration for testing
echo "OPENAI_API_KEY=test_key" >> .env
echo "LLM_PRIMARY_PROVIDER=ollama" >> .env

- name: Start Docker services
run: |
docker-compose -f docker/docker-compose.yml up -d

- name: Wait for services to be ready
run: |
echo "Waiting for services to start..."
sleep 30

- name: Test service health
run: |
# Test database
docker-compose -f docker/docker-compose.yml exec -T db mysql -u faker -ppassword -e "SELECT 1;"

# Test web server
curl -f http://localhost:8080 || exit 1

# Test Ollama service
curl -f http://localhost:11434/api/tags || exit 1

- name: Check container logs
if: failure()
run: |
echo "=== App Logs ==="
docker-compose -f docker/docker-compose.yml logs app
echo "=== Nginx Logs ==="
docker-compose -f docker/docker-compose.yml logs nginx
echo "=== Database Logs ==="
docker-compose -f docker/docker-compose.yml logs db
echo "=== Queue Logs ==="
docker-compose -f docker/docker-compose.yml logs queue

- name: Cleanup
if: always()
run: |
docker-compose -f docker/docker-compose.yml down -v

docker-security-scan:
name: Docker Security Scan
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Build Docker image
run: docker build -f docker/Dockerfile -t nullfake-security-test .

- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
image-ref: 'nullfake-security-test'
format: 'sarif'
output: 'trivy-results.sarif'

- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
if: always()
with:
sarif_file: 'trivy-results.sarif'
85 changes: 0 additions & 85 deletions docker.env.example

This file was deleted.

8 changes: 5 additions & 3 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
# This is an OPTIONAL deployment method - your local development environment remains unchanged
#
# To use Docker:
# 1. Copy docker.env.example to .env in the project root
# 2. Run: docker-compose -f docker/docker-compose.yml up -d
# 3. Run: docker-compose -f docker/docker-compose.yml exec app php artisan migrate
# 1. Copy .env.example to .env in the project root
# 2. Edit .env with your API keys (at minimum one LLM provider)
# 3. Run: docker-compose -f docker/docker-compose.yml up -d
#
# To stop: docker-compose -f docker/docker-compose.yml down

Expand All @@ -18,6 +18,7 @@ services:
container_name: nullfake-app
restart: unless-stopped
working_dir: /var/www/html
env_file: ../.env
volumes:
- ../:/var/www/html
- vendor_data:/var/www/html/vendor
Expand Down Expand Up @@ -68,6 +69,7 @@ services:
container_name: nullfake-queue
restart: unless-stopped
working_dir: /var/www/html
env_file: ../.env
volumes:
- ../:/var/www/html
- vendor_data:/var/www/html/vendor
Expand Down
Loading
Loading