# Dockerfile для Phantom Protocol # Многоэтапная сборка для оптимизации размера образа # Этап 1: Сборка FROM ubuntu:22.04 AS builder # Метаданные образа LABEL maintainer="Phantom Protocol Modernization Team" LABEL description="Phantom Protocol - Anonymous Network Communication System" LABEL version="2025-modernized" # Установка переменных окружения для неинтерактивной установки ENV DEBIAN_FRONTEND=noninteractive ENV TZ=UTC # Установка зависимостей для сборки RUN apt-get update && apt-get install -y \ build-essential \ gcc \ make \ libssl-dev \ libxml2-dev \ pkg-config \ protobuf-c-compiler \ libprotobuf-c-dev \ git \ && rm -rf /var/lib/apt/lists/* # Создание рабочей директории WORKDIR /build # Копирование исходного кода COPY . . # Генерация protobuf файлов WORKDIR /build/protos RUN chmod +x generate_protos.sh && ./generate_protos.sh # Сборка проекта WORKDIR /build/src RUN make clean && make phantomd # Этап 2: Рабочий образ FROM ubuntu:22.04 AS runtime # Установка переменных окружения ENV DEBIAN_FRONTEND=noninteractive ENV TZ=UTC # Установка только необходимых runtime зависимостей RUN apt-get update && apt-get install -y \ libssl3 \ libxml2 \ libprotobuf-c1 \ iproute2 \ iptables \ net-tools \ iputils-ping \ curl \ && rm -rf /var/lib/apt/lists/* # Создание пользователя phantom для безопасности RUN groupadd -r phantom && useradd -r -g phantom -d /home/phantom -s /bin/bash phantom # Создание необходимых директорий RUN mkdir -p /home/phantom/{config,logs,data,keys} \ && chown -R phantom:phantom /home/phantom # Копирование собранных бинарных файлов COPY --from=builder /build/src/phantomd /usr/local/bin/ COPY --from=builder /build/src/test/*.conf /home/phantom/config/ # Копирование скриптов запуска COPY docker/entrypoint.sh /usr/local/bin/ COPY docker/generate-config.sh /usr/local/bin/ COPY docker/healthcheck.sh /usr/local/bin/ # Установка прав на выполнение RUN chmod +x /usr/local/bin/entrypoint.sh \ && chmod +x /usr/local/bin/generate-config.sh \ && chmod +x /usr/local/bin/healthcheck.sh # Переключение на пользователя phantom USER phantom WORKDIR /home/phantom # Открытие портов # 8080 - основной порт Phantom Protocol # 8081 - порт для Kademlia DHT EXPOSE 8080 8081 # Настройка health check HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD /usr/local/bin/healthcheck.sh # Точка входа ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] # Команда по умолчанию CMD ["phantomd"]