From 6ce562e07e8efc5d8aedfcf59b6f4a435412c67d Mon Sep 17 00:00:00 2001 From: PhysCorp Date: Sun, 23 Mar 2025 01:30:45 -0400 Subject: [PATCH 1/3] Docker! --- .github/workflows/build-docker.yaml | 61 +++++++++++++++++++++++++++++ Dockerfile | 25 ++++++++++++ app/routes.py | 7 +++- docker-compose.yaml | 43 ++++++++++++++++++++ 4 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build-docker.yaml create mode 100644 Dockerfile create mode 100644 docker-compose.yaml diff --git a/.github/workflows/build-docker.yaml b/.github/workflows/build-docker.yaml new file mode 100644 index 0000000..e3db803 --- /dev/null +++ b/.github/workflows/build-docker.yaml @@ -0,0 +1,61 @@ +name: Build and Push Docker Image + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build-and-push: + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Install Docker Compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + + - name: Prepare QEMU Environment + uses: docker/setup-qemu-action@v1 + + - name: Configure Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Authenticate Docker Hub + uses: docker/login-action@v1 + with: + registry: docker.io + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Get version from app/params.json file + id: get_version + run: | + VERSION=$(jq -r '.VERSION' < app/params.json) + echo "version=$VERSION" >> $GITHUB_ENV + + - name: Build and Push Image to Docker Hub + env: + FLASK_RUN_HOST: "0.0.0.0" + FLASK_RUN_PORT: "8080" + SECRET_KEY: "none" + GOOGLE_GEMINI_API_KEY: "none" + ENABLE_GEMINI_API: "false" + GEMINI_MODEL: "gemini-2.0-flash" + run: | + docker-compose -f docker-compose.yaml config > docker-stack.yml + docker buildx create --use + docker buildx build --push --platform linux/amd64,linux/arm64 \ + --tag ${{ secrets.DOCKERHUB_USERNAME }}/bookworm:latest \ + --tag ${{ secrets.DOCKERHUB_USERNAME }}/bookworm:stable \ + --tag ${{ secrets.DOCKERHUB_USERNAME }}/bookworm:${{ env.version }} \ + --file Dockerfile . + + - name: Clean Up Environment + run: docker-compose down \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1ee8711 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +# Use the official Python image from the Docker Hub +FROM python:3.10-slim + +# Set the working directory in the container +WORKDIR /app + +# Copy the requirements file into the container +COPY requirements.txt . + +# Install the dependencies +RUN pip install --no-cache-dir -r requirements.txt + +# Copy the rest of the application code into the container (app -> /app/app, run.py -> /app) +COPY app /app/app +COPY run.py /app/ + +# Set environment variables +ENV FLASK_RUN_HOST=0.0.0.0 +ENV FLASK_RUN_PORT=8080 + +# Expose the port the app runs on +EXPOSE 8080 + +# Run the application +CMD ["python", "run.py"] \ No newline at end of file diff --git a/app/routes.py b/app/routes.py index fa5657c..0026cdd 100644 --- a/app/routes.py +++ b/app/routes.py @@ -218,4 +218,9 @@ def api_chat_status(): 'initialized': gemini_ai.initialized, 'available': gemini_ai.is_available(), 'model': gemini_ai.model - }) \ No newline at end of file + }) + +@main_bp.route('/healthcheck', methods=['GET']) +def healthcheck(): + """Health check endpoint for the application""" + return jsonify({'status': 'ok'}), 200 \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..8f52ebb --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,43 @@ +version: '3.8' + +services: + web: + container_name: bookworm_web + image: mwcurtis20/bookworm:stable + build: . + ports: + - "8080:${FLASK_RUN_PORT}" + environment: + - FLASK_RUN_HOST=${FLASK_RUN_HOST} + - FLASK_RUN_PORT=${FLASK_RUN_PORT} + - SECRET_KEY=${SECRET_KEY} + - GOOGLE_GEMINI_API_KEY=${GOOGLE_GEMINI_API_KEY} + - ENABLE_GEMINI_API=${ENABLE_GEMINI_API} + - GEMINI_MODEL=${GEMINI_MODEL} + labels: + - "com.centurylinklabs.watchtower.scope=bookworm" + networks: + - internal_bookworm_net + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/healthcheck"] + interval: 30s + timeout: 10s + retries: 3 + watchtower: + image: containrrr/watchtower + container_name: bookworm_watchtower + environment: + - REPO_USER=${REPO_USER} + - REPO_PASS=${REPO_PASS} + volumes: + - /var/run/docker.sock:/var/run/docker.sock + labels: + - "com.centurylinklabs.watchtower.scope=bookworm" + networks: + - internal_bookworm_net + command: --debug --scope bookworm --cleanup --interval 300 + restart: unless-stopped +networks: + internal_bookworm_net: + external: false \ No newline at end of file From c6ec3a0ed1f4e410ff7a7465e8de6b251250679d Mon Sep 17 00:00:00 2001 From: PhysCorp Date: Sun, 23 Mar 2025 01:45:49 -0400 Subject: [PATCH 2/3] Fix --- .github/workflows/build-docker.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-docker.yaml b/.github/workflows/build-docker.yaml index e3db803..cf7db15 100644 --- a/.github/workflows/build-docker.yaml +++ b/.github/workflows/build-docker.yaml @@ -57,5 +57,5 @@ jobs: --tag ${{ secrets.DOCKERHUB_USERNAME }}/bookworm:${{ env.version }} \ --file Dockerfile . - - name: Clean Up Environment - run: docker-compose down \ No newline at end of file + # - name: Clean Up Environment + # run: docker-compose down \ No newline at end of file From 7cbef41378ec5082006d1675143147ab721b5f09 Mon Sep 17 00:00:00 2001 From: SKel1817 Date: Sun, 23 Mar 2025 02:14:45 -0400 Subject: [PATCH 3/3] icons into application --- app/static/images/Logo.ico | Bin 0 -> 174424 bytes app/static/images/Logo.png | Bin 0 -> 32297 bytes app/templates/base.html | 7 +++++-- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 app/static/images/Logo.ico create mode 100644 app/static/images/Logo.png diff --git a/app/static/images/Logo.ico b/app/static/images/Logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..0296b8f371c19bc9c089ba01bbb7ed3756ce9d4c GIT binary patch literal 174424 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 Zk!*&|CI!gn;71JzWkt0^c?xE}{|9pBjsE}u literal 0 HcmV?d00001 diff --git a/app/static/images/Logo.png b/app/static/images/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8379542ab7ac4d2d5931602e3a1f77e0db62605a GIT binary patch literal 32297 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�r;UgzCdXfx%xu?q7#DJ7v}{TGrxP oc0W==LZaV>74w`IE|eIDpBea%{O`q*{% block title %}BookWorm{% endblock %} - + @@ -107,6 +107,9 @@ 90% { transform: translate(1px, 2px) rotate(0deg); } 100% { transform: translate(1px, -2px) rotate(-1deg); } } + main { + margin-top: 88px; /* or however tall your navbar is */ + } {% block head %}{% endblock %} @@ -119,7 +122,7 @@