This commit is contained in:
lumin 2025-03-06 05:35:37 -08:00 committed by GitHub
commit e4238eb1ac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 69 additions and 20 deletions

View file

@ -7,9 +7,7 @@
"context": "..",
// Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
"dockerfile": "../Dockerfile",
"args": {
"INSTALL_GIT": "true"
}
"target": "development"
},
// Features to add to the dev container. More info: https://containers.dev/features.
@ -17,6 +15,14 @@
"features": {
"ghcr.io/devcontainers-extra/features/hatch:2": {}
},
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"charliermarsh.ruff"
]
}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
@ -28,5 +34,5 @@
// "customizations": {},
// Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root.
"remoteUser": "root"
// "remoteUser": "root"
}

View file

@ -1 +1,9 @@
*
**/coverage
**/.env
**/.aws
**/.ssh
Dockerfile
docker-compose.yml
**/.DS_Store
**/venv
**/env

View file

@ -1,23 +1,58 @@
FROM python:3.13-slim-bullseye
# FFmpeg stage
FROM jrottenberg/ffmpeg:4.1-scratch AS ffmpeg
USER root
# Development stage
FROM python:3.13-bullseye AS development
ARG INSTALL_GIT=false
RUN if [ "$INSTALL_GIT" = "true" ]; then \
apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*; \
fi
COPY --from=ffmpeg / /
# Runtime dependency
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1
# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg \
&& rm -rf /var/lib/apt/lists/*
build-essential \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN pip install markitdown
RUN pip install --no-cache-dir hatch
WORKDIR /app
COPY . /app/
# Build stage
FROM python:3.13-bullseye AS build
# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir hatch
WORKDIR /app
COPY pyproject.toml /app/
COPY . /app/
RUN hatch build
# Production stage
FROM python:3.13-slim-bullseye AS production
# Copy ffmpeg binaries
COPY --from=ffmpeg / /
WORKDIR /app
COPY --from=build /app/dist /tmp/dist
RUN pip install --no-cache-dir /tmp/dist/markitdown-*.whl
# Default USERID and GROUPID
ARG USERID=10000
ARG GROUPID=10000
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
USER $USERID:$GROUPID
ENTRYPOINT [ "markitdown" ]
# Entrypoint
ENTRYPOINT ["markitdown"]