FROM nginx:1.26.3

ARG NGINX_VERSION=1.26.3

ARG REVISION
ARG BUILDTIME
ARG VERSION
LABEL REVISION=${REVISION}
LABEL BUILDTIME=${BUILDTIME}

LABEL com.datadoghq.tags.service=delphi-api-nginx
LABEL com.datadoghq.tags.version=${VERSION}

ENV DD_VERSION=${VERSION}

# Install nginx-opentracing
RUN apt-get update && \
  apt-get install -y wget jq && \
  get_latest_release() { \
  wget -qO- "https://api.github.com/repos/$1/releases/latest" | jq -r .tag_name ; \
  } && \
  OPENTRACING_NGINX_VERSION="$(get_latest_release opentracing-contrib/nginx-opentracing)" && \
  DD_OPENTRACING_CPP_VERSION="$(get_latest_release DataDog/dd-opentracing-cpp)" && \
  \
  wget https://github.com/opentracing-contrib/nginx-opentracing/releases/download/${OPENTRACING_NGINX_VERSION}/linux-amd64-nginx-${NGINX_VERSION}-ngx_http_module.so.tgz && \
  NGINX_MODULES=$(nginx -V 2>&1 | grep "configure arguments" | sed -n 's/.*--modules-path=\([^ ]*\).*/\1/p') && \
  tar zxvf linux-amd64-nginx-${NGINX_VERSION}-ngx_http_module.so.tgz -C "${NGINX_MODULES}" && \
  ls -la ${NGINX_MODULES} && \
  # Install Datadog module
  wget -O - https://github.com/DataDog/dd-opentracing-cpp/releases/download/${DD_OPENTRACING_CPP_VERSION}/linux-amd64-libdd_opentracing_plugin.so.gz | gunzip -c > /usr/local/lib/libdd_opentracing_plugin.so

COPY nginx.template.conf /usr/share/nginx/nginx.template.conf
COPY dd_configs /usr/share/nginx/dd_configs
COPY entrypoint.sh /usr/share/nginx/entrypoint.sh
RUN chmod +x /usr/share/nginx/entrypoint.sh

# Set default variables
ENV DNS_SERVER="127.0.0.11" \
    DD_SERVICE="delphi-api-nginx" \
    DD_VERSION=${VERSION} \
    DD_ENABLED="FALSE" \
    TESTING="FALSE" \
    ACCESS_LOG_STATUS="/var/log/nginx/access.log combined" \
    PROXY_BUFFERS="8 32k" \
    PROXY_BUSY_BUFFERS_SIZE="32k" \
    PROXY_BUFFER_SIZE="16k" \
    PROXY_CACHE_PATH="/tmp" \
    PROXY_CACHE_KEYS_ZONE="default_zone" \
    PROXY_CACHE_MAX_SIZE="5g" \
    PROXY_CACHE_INACTIVE="4h" \
    SERVER_NAME="_" \
    BACKEND_ADDRESS="example.com" \
    BACKEND_PROTO="https" \
    HEALTHCHECK_ENDPOINTS="~ .*/health\$" \
    OAUTH_ENDPOINTS="~ .*/oauth/token" \
    DISABLED_AUTH_ENDPOINTS_1="~ .*/(api-docs|swagger-ui|ui)/.*" \
    DISABLED_AUTH_ENDPOINTS_2="~ .*\.swagger\.yaml\$" \
    DATACOMPLETENESS_ENDPOINT="/v3/data-health/" \
    ADS_PERFOMANCE_ENDPOINT="/v3/ads/performance" \
    ADS_PERFOMANCE_CACHE_INACTIVE="2s" \
    CHARTS_ENDPOINT_1="~* ^/v3/(track-positions|video-positions)/charts(/summary)?\$" \
    CHARTS_ENDPOINT_2="~* ^/v3/shazam/charts/track-positions(/summary?)\$" \
    PUBLIC_TRACK_POSITIONS_PLAYLISTS_1="~* ^/v3/public/track-positions/playlists\$" \
    SHORT_CACHE_INACTIVE="15m" \
    SHORT_CACHE_INACTIVE_V2="5m" \
    DISABLED_ENDPOINT="/v1/fake/endpoint"

CMD ["/bin/bash", "/usr/share/nginx/entrypoint.sh"]
