# Phantom DNS Server - Специализированный контейнер для DNS сервера FROM ubuntu:22.04 LABEL maintainer="Phantom Protocol Team 2025" LABEL description="Phantom DNS Server - Децентрализованная доменная система" LABEL version="2.0.0" # Установка зависимостей RUN apt-get update && apt-get install -y \ build-essential \ libssl-dev \ libxml2-dev \ libprotobuf-c-dev \ protobuf-c-compiler \ iproute2 \ iptables \ net-tools \ dnsutils \ curl \ wget \ vim \ htop \ && rm -rf /var/lib/apt/lists/* # Создание пользователя phantom RUN useradd -r -s /bin/false -d /var/lib/phantom phantom && \ mkdir -p /var/lib/phantom /var/log/phantom /etc/phantom && \ chown -R phantom:phantom /var/lib/phantom /var/log/phantom /etc/phantom # Копирование исходного кода COPY src/ /usr/src/phantom/ COPY protos/ /usr/src/phantom/protos/ # Компиляция Phantom DNS WORKDIR /usr/src/phantom RUN make clean && \ make phantom-dns && \ cp phantom-dns /usr/local/bin/ && \ chmod +x /usr/local/bin/phantom-dns # Копирование конфигурационных файлов COPY docker/configs/dns/ /etc/phantom/ COPY docker/scripts/dns/ /usr/local/bin/ # Создание директорий для данных RUN mkdir -p /var/lib/phantom/dns/cache \ /var/lib/phantom/dns/keys \ /var/lib/phantom/dns/zones \ /var/log/phantom/dns # Настройка прав доступа RUN chown -R phantom:phantom /var/lib/phantom /var/log/phantom /etc/phantom && \ chmod +x /usr/local/bin/phantom-dns-start.sh && \ chmod +x /usr/local/bin/phantom-dns-healthcheck.sh # Открытие портов EXPOSE 5353/udp # DNS порт EXPOSE 8053/tcp # Управление EXPOSE 9053/tcp # Мониторинг # Переменные окружения ENV PHANTOM_DNS_PORT=5353 ENV PHANTOM_DNS_BIND_ADDR=0.0.0.0 ENV PHANTOM_DNS_LOG_LEVEL=INFO ENV PHANTOM_DNS_CACHE_SIZE=10000 ENV PHANTOM_DNS_TTL_DEFAULT=3600 ENV PHANTOM_KADEMLIA_PORT=6881 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD /usr/local/bin/phantom-dns-healthcheck.sh # Переключение на пользователя phantom USER phantom # Рабочая директория WORKDIR /var/lib/phantom # Точка входа ENTRYPOINT ["/usr/local/bin/phantom-dns-start.sh"] CMD ["--config", "/etc/phantom/dns.conf"]