Files
Phantom/release/Dockerfile.dns

83 lines
2.5 KiB
Docker

# 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"]