diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7ab48e4..01c0d0c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,6 @@ { "name": "Python Dev", + // !! nezabudni nastaviť aj verziu python pre aplikáciu "image": "docker.masara.eu/python:3.13-0.1-devcontainer", // "build": { // "dockerfile": "Dockerfile", @@ -13,7 +14,9 @@ "PIP_ROOT_USER_ACTION": "ignore" }, "remoteEnv": { - "DOCKER_BUILDKIT": "1" + "DOCKER_BUILDKIT": "1", + // verzia python pre aplikáciu + "PYTHON_BASE": "3.13" }, "workspaceFolder": "/workspace", "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind", diff --git a/Dockerfile b/Dockerfile index b61933c..16e791f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ # syntax=docker/dockerfile:1.6 -FROM python:3.11-slim + +ARG PYTHON_BASE=3.13 +FROM python:${PYTHON_BASE}-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ @@ -8,45 +10,23 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ PIP_INDEX_URL=https://dv.masara.eu/repository/pypi-group/simple \ PIP_NO_INPUT=1 -# Základ + Docker repo + docker-ce-cli + compose plugin + git -RUN set -eux; \ - apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - ca-certificates curl gnupg && \ - install -m 0755 -d /etc/apt/keyrings && \ - curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ - chmod a+r /etc/apt/keyrings/docker.gpg && \ - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ - https://download.docker.com/linux/debian $(. /etc/os-release && echo $VERSION_CODENAME) stable" \ - > /etc/apt/sources.list.d/docker.list && \ - apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - build-essential pkg-config \ - git \ - docker-ce-cli docker-compose-plugin docker-buildx-plugin \ - libatomic1 libstdc++6 libgcc-s1 \ - procps \ - && rm -rf /var/lib/apt/lists/* - -WORKDIR /workspace - -ARG APP_USER_ID=1000 -RUN useradd -u ${APP_USER_ID} -m appuser - WORKDIR /app +# Inštalácia závislostí COPY requirements.txt . RUN --mount=type=cache,target=/root/.cache/pip \ pip install -r requirements.txt +# Kopírovanie zdrojov COPY app/ /app/ -# ak len adresár /app -RUN chown -R appuser:appuser /app -# príklad vytvorenia ďalľieho adresára pre aplikáciu a zmena vlastníctva naraz aj pre /app -# RUN mkdir -p /models && chown -R appuser:appuser /models /app + +# Vytvorenie ne-root usera +ARG APP_USER_ID=1000 +RUN useradd -u ${APP_USER_ID} -m appuser && \ + chown -R appuser:appuser /app USER appuser -# Príklad sprístupnenia a spustenia uvicorn +# Príklad spustenia # EXPOSE 8080 # CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]