unified: Phantom Protocol 2025 complete archive integration
This commit is contained in:
101
release/Dockerfile
Normal file
101
release/Dockerfile
Normal file
@@ -0,0 +1,101 @@
|
||||
# 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"]
|
||||
|
||||
Reference in New Issue
Block a user