Files
AI/참고/ontocast-main/Dockerfile

59 lines
2.2 KiB
Docker
Raw Normal View History

2026-05-12 19:40:31 +09:00
# ─── builder stage ───────────────────────────────────────────────────────────
FROM python:3.12-slim-bullseye AS builder
RUN apt update -y \
&& apt install -y curl git \
&& curl -LsSf https://astral.sh/uv/0.9.5/install.sh | sh \
&& rm -rf /var/lib/apt/lists/*
ENV PATH="${PATH}:/root/.local/bin"
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN touch README.md
# uv creates a venv and installs deps
RUN --mount=type=ssh uv sync --no-group dev --no-group docs -v
COPY ontocast ./ontocast
COPY README.md ./
# ─── runtime stage ────────────────────────────────────────────────────────────
FROM python:3.12-slim-bullseye AS runtime
LABEL org.opencontainers.image.title="ontocast-mcp-server" \
org.opencontainers.image.version="0.1.1" \
org.opencontainers.image.description="Ontologyassisted semantic triple extractor (MCPcompatible)"
# Install curl for healthcheck
RUN apt update -y \
&& apt install -y curl \
&& rm -rf /var/lib/apt/lists/*
# Create non-root user
RUN groupadd -r ontocast && useradd -r -g ontocast ontocast
USER ontocast
WORKDIR /app
COPY --from=builder /app /app
# ─── Volume Mounting Notes ──────────────────────────────────────────────────────
# Paths are configured via .env file (ONTOCAST_WORKING_DIRECTORY,
# ONTOCAST_ONTOLOGY_DIRECTORY, ONTOCAST_CACHE_DIR) and should be mounted
# as volumes in docker-compose to persist data and allow host access.
#
# Example docker-compose volumes:
# volumes:
# - ./data/working:/path/to/working
# - ./data/ontologies:/path/to/ontologies
# - ./data/cache:/path/to/cache
#
# Ensure the paths in .env match the container-side mount paths.
# Do NOT hardcode paths in Dockerfile - they must come from .env configuration.
# Expose & healthcheck
EXPOSE 8999
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
CMD curl -f http://localhost:8999/health || exit 1
ENTRYPOINT ["uv", "run", "ontocast"]