Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
60 lines (48 loc) · 1.98 KB
/
Copy pathDockerfile
File metadata and controls
60 lines (48 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# syntax=docker.osdc.io/docker/dockerfile:1
ARG BASE_VERSION=3.5.0
ARG REGISTRY=docker.osdc.io
ARG SERVICE_NAME=indexd
ARG PYTHON_VERSION=python3.13
FROM ${REGISTRY}/ncigdc/${PYTHON_VERSION}-builder:${BASE_VERSION} AS build
ARG PIP_INDEX_URL=https://nexus.osdc.io/repository/pypi-gdc-releases/simple
ARG PYTHON_VERSION
ARG SERVICE_NAME
# avoids used detach heads in computing versions in gitlab
ARG GIT_BRANCH_NAME
ENV CI_COMMIT_REF_NAME=$GIT_BRANCH_NAME \
PIP_INDEX_URL=$PIP_INDEX_URL
# When looking for its virtual environment, uv will not respect VIRTUAL_ENV. It expects its
# virtualenv to be in a `.venv` subdirectory, even if we provide an explicit path to `uv venv`.
# This environment variable overrides where uv expects its virtual environment to be.
ENV UV_PROJECT_ENVIRONMENT='/venv'
WORKDIR /${SERVICE_NAME}
COPY . .
RUN uv sync --locked --no-dev --no-editable
FROM ${REGISTRY}/ncigdc/${PYTHON_VERSION}:${BASE_VERSION}
ARG NAME
ARG PYTHON_VERSION
ARG SERVICE_NAME
ARG GIT_BRANCH
ARG COMMIT
ARG BUILD_DATE
LABEL org.opencontainers.image.title="${SERVICE_NAME}" \
org.opencontainers.image.description="${SERVICE_NAME} container image" \
org.opencontainers.image.source="https://github.com/NCI-GDC/${SERVICE_NAME}" \
org.opencontainers.image.vendor="NCI GDC" \
org.opencontainers.image.ref.name="${SERVICE_NAME}:${GIT_BRANCH}" \
org.opencontainers.image.revision="${COMMIT}" \
org.opencontainers.image.created="${BUILD_DATE}"
ENV DD_GIT_COMMIT_SHA=${COMMIT} \
DD_GIT_REPOSITORY_URL=https://github.com/NCI-GDC/${SERVICE_NAME}
RUN dnf install -y libpq-17.4 && \
mkdir -p /var/www/${SERVICE_NAME}/ && \
chmod 777 /var/www/${SERVICE_NAME}
COPY --chown=app:app wsgi.py /var/www/${SERVICE_NAME}/wsgi.py
COPY --chown=app:app gunicorn.conf.py /var/www/${SERVICE_NAME}/gunicorn.conf.py
COPY --chown=app:app --from=build /venv /venv
WORKDIR /var/www/${SERVICE_NAME}
EXPOSE 80 443
USER app:app
CMD [ "ddtrace-run", \
"/venv/bin/gunicorn", \
"wsgi" ]