* Update Dockerfile for fetch Initial patch for podman and SELinux contexts. * Update Dockerfile for time podman and SELinux * Update Dockerfile * Also include app user / group (securely) such that the build succeeds * Container app user optional add (#1) * Update Dockerfile git * Update Dockerfile fetch * Update Dockerfile time * Update Dockerfile * Update Dockerfile * Update Dockerfile --------- Co-authored-by: Ola Hungerford <olahungerford@gmail.com>
42 lines
1.3 KiB
Docker
42 lines
1.3 KiB
Docker
# Use a Python image with uv pre-installed
|
|
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS uv
|
|
|
|
# Install the project into `/app`
|
|
WORKDIR /app
|
|
|
|
# Enable bytecode compilation
|
|
ENV UV_COMPILE_BYTECODE=1
|
|
|
|
# Copy from the cache instead of linking since it's a mounted volume
|
|
ENV UV_LINK_MODE=copy
|
|
|
|
# Install the project's dependencies using the lockfile and settings
|
|
COPY uv.lock pyproject.toml ./
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv sync --locked --no-install-project --no-dev --no-editable
|
|
|
|
# Then, add the rest of the project source code and install it
|
|
# Installing separately from its dependencies allows optimal layer caching
|
|
ADD . /app
|
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
|
uv sync --locked --no-dev --no-editable
|
|
|
|
FROM python:3.12-slim-bookworm
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=uv /root/.local /root/.local
|
|
|
|
RUN if ! id -u app >/dev/null 2>&1; then \
|
|
useradd -rUM -s /usr/sbin/nologin app; \
|
|
fi
|
|
COPY --from=uv --chown=app:app /app/.venv /app/.venv
|
|
|
|
# Place executables in the environment at the front of the path
|
|
ENV PATH="/app/.venv/bin:$PATH"
|
|
|
|
# Set the LOCAL_TIMEZONE environment variable
|
|
ENV LOCAL_TIMEZONE=${LOCAL_TIMEZONE:-"UTC"}
|
|
|
|
# when running the container, add --local-timezone and a bind mount to the host's db file
|
|
ENTRYPOINT ["mcp-server-time", "--local-timezone", "${LOCAL_TIMEZONE}"]
|