# Базовый образ на основе Alpine FROM alpine:3.15 # Устанавливаем зависимости: Nginx, bash, curl RUN apk add --no-cache nginx bash curl # Устанавливаем Prometheus 3.3.0 ENV PROMETHEUS_VERSION=3.3.0 RUN curl -LO https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz \ && tar xvf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz \ && mv prometheus-${PROMETHEUS_VERSION}.linux-amd64/prometheus /usr/local/bin/ \ && mv prometheus-${PROMETHEUS_VERSION}.linux-amd64/promtool /usr/local/bin/ \ && rm -rf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz prometheus-${PROMETHEUS_VERSION}.linux-amd64 # Устанавливаем Pushgateway 1.11.1 ENV PUSHGATEWAY_VERSION=1.11.1 RUN curl -LO https://github.com/prometheus/pushgateway/releases/download/v${PUSHGATEWAY_VERSION}/pushgateway-${PUSHGATEWAY_VERSION}.linux-amd64.tar.gz \ && tar xvf pushgateway-${PUSHGATEWAY_VERSION}.linux-amd64.tar.gz \ && mv pushgateway-${PUSHGATEWAY_VERSION}.linux-amd64/pushgateway /usr/local/bin/ \ && rm -rf pushgateway-${PUSHGATEWAY_VERSION}.linux-amd64.tar.gz pushgateway-${PUSHGATEWAY_VERSION}.linux-amd64 # Создаём директории для Prometheus, Nginx логов, временных файлов и PID RUN mkdir -p /prometheus /etc/prometheus /etc/nginx/http.d /var/log/nginx /var/nginx/tmp /var/lib/nginx/logs /run/nginx \ && chown -R nobody:nobody /prometheus /etc/prometheus /etc/nginx /var/log/nginx /var/nginx/tmp /var/lib/nginx/logs /run/nginx \ && chmod -R 777 /prometheus /var/log/nginx /var/nginx/tmp /var/lib/nginx/logs /run/nginx # Копируем конфигурацию Prometheus COPY --chown=nobody prometheus.yml /etc/prometheus/prometheus.yml # Копируем конфигурацию Nginx COPY nginx.conf /etc/nginx/nginx.conf COPY default.conf /etc/nginx/http.d/default.conf # Копируем entrypoint-скрипт COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh # Открываем порт 8080 для Nginx (изменено с 80) EXPOSE 8080 # Запускаем контейнер от имени nobody USER nobody # Указываем точку входа ENTRYPOINT ["/entrypoint.sh"]