diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..699c63a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,52 @@ +# Git +.git +.gitignore +.github + +# IDE +.vscode +.idea +*.swp +*.swo +*~ + +# Build artifacts +bin/ +dist/ +*.exe +*.dll +*.so +*.dylib + +# Test files +*.test +*_test.go +coverage.* +*.out + +# Logs +*.log +strix.log + +# Config files (user-specific) +strix.yaml +test_*.yaml +config.yaml + +# Temporary files +tmp/ +temp/ +*.dump +*_output.txt + +# Documentation (included in image metadata instead) +*.md +!README.md + +# OS files +.DS_Store +Thumbs.db + +# Development +.env +.env.local diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..1c87e3e --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,77 @@ +name: Docker Build and Push + +on: + push: + branches: + - main + tags: + - 'v*' + pull_request: + branches: + - main + +env: + REGISTRY: docker.io + IMAGE_NAME: eduard256/strix + +jobs: + build-and-push: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=raw,value=latest,enable={{is_default_branch}} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + VERSION=${{ steps.meta.outputs.version }} + + - name: Docker Hub Description + if: github.event_name != 'pull_request' + uses: peter-evans/dockerhub-description@v4 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + repository: ${{ env.IMAGE_NAME }} + readme-filepath: ./README.md + short-description: "Smart IP Camera Stream Discovery System" diff --git a/DOCKER.md b/DOCKER.md new file mode 100644 index 0000000..91cbf16 --- /dev/null +++ b/DOCKER.md @@ -0,0 +1,164 @@ +# 🐳 Docker Setup for Strix + +## Quick Start + +### Using Docker Compose (Recommended) + +```bash +# Start Strix +docker-compose up -d + +# View logs +docker-compose logs -f strix + +# Stop Strix +docker-compose down +``` + +Access: http://localhost:4567 + +### Using Docker Run + +```bash +docker run -d \ + --name strix \ + -p 4567:4567 \ + eduard256/strix:latest +``` + +## Configuration + +### Using Environment Variables + +```bash +docker run -d \ + --name strix \ + -p 8080:8080 \ + -e STRIX_API_LISTEN=:8080 \ + -e STRIX_LOG_LEVEL=debug \ + eduard256/strix:latest +``` + +### Using Config File + +```bash +# Create strix.yaml +cat > strix.yaml <