| 123456789101112131415161718192021222324252627282930313233 |
- FROM python:3.14-slim
- COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
- # Node.js 22 LTS
- RUN apt-get update \
- && apt-get install -y --no-install-recommends ca-certificates curl tini xvfb \
- && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
- && apt-get install -y --no-install-recommends nodejs \
- && rm -rf /var/lib/apt/lists/*
- WORKDIR /app
- # Python deps — cached until pyproject.toml / uv.lock change
- COPY pyproject.toml uv.lock ./
- RUN uv sync --group api --group mcp --no-dev --frozen
- # TypeScript deps — cached until package*.json changes
- COPY room_cal/service_api/typescript/package*.json \
- ./room_cal/service_api/typescript/
- RUN cd room_cal/service_api/typescript \
- && npm ci \
- && node_modules/.bin/playwright install-deps chromium
- # App source
- COPY room_cal/ ./room_cal/
- COPY docker/uvicorn_log.json /etc/uvicorn_log.json
- COPY docker/entrypoint.sh /entrypoint.sh
- RUN chmod +x /entrypoint.sh
- ENTRYPOINT ["/usr/bin/tini", "--"]
- CMD ["/entrypoint.sh"]
|