fix dockerfile, add build CI, deploy example
Docker server image / build-and-push (push) Failing after 1m18s

This commit is contained in:
2026-03-27 15:19:30 -07:00
parent 09d38edc43
commit 60cf8c231c
4 changed files with 112 additions and 2 deletions
+20
View File
@@ -0,0 +1,20 @@
# Git and local tooling
.git
.gitignore
.cursor
# Python caches and local virtualenvs (not copied into image)
**/.venv
**/__pycache__
**/*.py[cod]
.pytest_cache
.mypy_cache
.ruff_cache
# Not used by Dockerfile.server (only COPY python/ and gen/)
clients/
deploy/
Makefile
.env
.env.*
+38
View File
@@ -0,0 +1,38 @@
name: Docker server image
on:
push:
branches:
- main
tags:
- "v*"
pull_request:
permissions:
contents: read
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: Log in to Gitea container registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: gitea.auvem.com
username: ${{ secrets.GITEA_REGISTRY_USER }}
password: ${{ secrets.GITEA_REGISTRY_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile.server
push: ${{ github.event_name != 'pull_request' }}
tags: |
gitea.auvem.com/end-internal/officeconvert-server:${{ github.sha }}
gitea.auvem.com/end-internal/officeconvert-server:latest
+14 -2
View File
@@ -2,20 +2,32 @@ FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH=/app/gen/python:/app/python/packages/officeconvert/src:/app/python/packages/server/src # Protobuf/gRPC stubs live outside the venv-installed packages
ENV PYTHONPATH=/app/gen/python
# libreoffice: soffice (headless PPTX→PDF); poppler-utils: pdftoppm; fonts-dejavu-core: baseline fonts
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
libreoffice \ libreoffice \
libreoffice-impress \
poppler-utils \ poppler-utils \
fonts-dejavu-core \ fonts-dejavu-core \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
WORKDIR /app WORKDIR /app
# Hatch (pyproject readme = ../../../README.md) resolves from each package dir; repo root must exist
COPY README.md /app/README.md
COPY python /app/python COPY python /app/python
COPY gen /app/gen COPY gen /app/gen
RUN pip install --no-cache-dir -e /app/python/packages/officeconvert -e /app/python/packages/server RUN pip install --no-cache-dir uv
WORKDIR /app/python
RUN uv sync --frozen --all-packages
ENV PATH="/app/python/.venv/bin:$PATH"
WORKDIR /app
EXPOSE 8080 EXPOSE 8080
+40
View File
@@ -0,0 +1,40 @@
# Prebuilt server image from Gitea registry. For local builds use deploy/docker-compose.yml.
services:
seaweedfs:
image: chrislusf/seaweedfs:latest
command:
- server
- -s3
environment:
AWS_ACCESS_KEY_ID: ${S3_ACCESS_KEY:-minioadmin}
AWS_SECRET_ACCESS_KEY: ${S3_SECRET_KEY:-minioadmin}
ports:
- "8333:8333"
- "9333:9333"
- "8888:8888"
volumes:
- seaweedfs_data:/data
server:
image: gitea.auvem.com/end-internal/officeconvert-server:${OFFICECONVERT_IMAGE_TAG:-latest}
depends_on:
- seaweedfs
environment:
S3_ENDPOINT: ${S3_ENDPOINT:-seaweedfs:8333}
S3_PUBLIC_ENDPOINT: ${S3_PUBLIC_ENDPOINT:-localhost:8333}
S3_USE_SSL: ${S3_USE_SSL:-false}
S3_ACCESS_KEY: ${S3_ACCESS_KEY:-minioadmin}
S3_SECRET_KEY: ${S3_SECRET_KEY:-minioadmin}
S3_SESSION_TTL_SECONDS: ${S3_SESSION_TTL_SECONDS:-3600}
CONVERSION_PPTX_TO_PDF_TIMEOUT_SECONDS: ${CONVERSION_PPTX_TO_PDF_TIMEOUT_SECONDS:-180}
CONVERSION_PDF_TO_IMAGES_TIMEOUT_SECONDS: ${CONVERSION_PDF_TO_IMAGES_TIMEOUT_SECONDS:-1800}
CONVERSION_PPTX_TO_PDF_BASE_TIMEOUT_SECONDS: ${CONVERSION_PPTX_TO_PDF_BASE_TIMEOUT_SECONDS:-45}
CONVERSION_PPTX_TO_PDF_PER_SLIDE_TIMEOUT_SECONDS: ${CONVERSION_PPTX_TO_PDF_PER_SLIDE_TIMEOUT_SECONDS:-3}
CONVERSION_PDF_TO_IMAGES_BASE_TIMEOUT_SECONDS: ${CONVERSION_PDF_TO_IMAGES_BASE_TIMEOUT_SECONDS:-30}
CONVERSION_PDF_TO_IMAGES_PER_SLIDE_TIMEOUT_SECONDS: ${CONVERSION_PDF_TO_IMAGES_PER_SLIDE_TIMEOUT_SECONDS:-8}
CONVERSION_CLEANUP_DELAY_SECONDS: ${CONVERSION_CLEANUP_DELAY_SECONDS:-3600}
ports:
- "8080:8080"
volumes:
seaweedfs_data: