83 lines
2.5 KiB
Docker
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"]
|
|
|