sterepando commited on
Commit
4e46096
·
verified ·
1 Parent(s): 07da0f8

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +18 -21
Dockerfile CHANGED
@@ -1,33 +1,27 @@
1
  # --- START OF FILE Dockerfile ---
2
- # Используем latest, так как xray-core требует свежий Go (>= 1.25.6 в 2026 году)
3
  FROM golang:latest
4
 
5
- # Обновляем систему и ставим зависимости
6
  RUN apt-get update && apt-get install -y wget unzip git build-essential python3
7
 
8
- # Настройка переменных Android NDK
9
  ENV ANDROID_NDK_HOME /opt/android-ndk
10
  ENV ANDROID_NDK_VERSION r25c
11
 
12
- # Скачивание и распаковка NDK (версия r25c стабильна для кросс-компиляции)
13
  RUN wget -q https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux.zip && \
14
  unzip -q android-ndk-${ANDROID_NDK_VERSION}-linux.zip && \
15
  mv android-ndk-${ANDROID_NDK_VERSION} /opt/android-ndk && \
16
  rm android-ndk-${ANDROID_NDK_VERSION}-linux.zip
17
 
18
- # Добавление toolchain в PATH
19
  ENV PATH ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
20
 
21
- # Рабочая директория
22
  WORKDIR /app
23
 
24
- # Инициализация Go модуля
25
- # Включаем автоматическое обновление тулчейна
26
  ENV GOTOOLCHAIN=auto
27
  RUN go mod init vless-client
28
 
29
- # Создание Go кода (Main Wrapper)
30
- # Обертка для запуска Xray ядра из Android
31
  RUN cat <<EOF > main.go
32
  package main
33
 
@@ -59,13 +53,20 @@ func StartCore(configContent *C.char) *C.char {
59
 
60
  configStr := C.GoString(configContent)
61
 
62
- // Декодируем JSON конфиг в формат Xray (Protobuf)
63
- config, err := serial.DecodeJSONConfig(strings.NewReader(configStr))
64
  if err != nil {
65
- return C.CString("Config decode error: " + err.Error())
66
  }
67
 
68
- coreInstance, err := core.New(config)
 
 
 
 
 
 
 
69
  if err != nil {
70
  return C.CString("Core create error: " + err.Error())
71
  }
@@ -108,23 +109,19 @@ func Base64Decode(str *C.char) *C.char {
108
  func main() {}
109
  EOF
110
 
111
- # Скачивание зависимостей
112
- # Используем @latest для получения самой свежей версии ядра
113
  RUN go get -u github.com/xtls/xray-core@latest
114
  RUN go mod tidy
115
 
116
- # Компиляция Shared Library (.so) для Android ARM64
117
- # Используем NDK clang для компиляции C-части (cgo)
118
  RUN CGO_ENABLED=1 \
119
  GOOS=android \
120
  GOARCH=arm64 \
121
  CC=aarch64-linux-android33-clang \
122
  go build -buildmode=c-shared -o libvless.so main.go
123
 
124
- # Подготовка к раздаче
125
  RUN mkdir /output && mv libvless.so /output/
126
-
127
- # Запуск простого HTTP сервера для скачивания файла
128
  WORKDIR /output
129
  CMD ["python3", "-m", "http.server", "7860"]
130
  # --- END OF FILE Dockerfile ---
 
1
  # --- START OF FILE Dockerfile ---
 
2
  FROM golang:latest
3
 
4
+ # Обновление и зависимости
5
  RUN apt-get update && apt-get install -y wget unzip git build-essential python3
6
 
7
+ # Настройка Android NDK
8
  ENV ANDROID_NDK_HOME /opt/android-ndk
9
  ENV ANDROID_NDK_VERSION r25c
10
 
 
11
  RUN wget -q https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux.zip && \
12
  unzip -q android-ndk-${ANDROID_NDK_VERSION}-linux.zip && \
13
  mv android-ndk-${ANDROID_NDK_VERSION} /opt/android-ndk && \
14
  rm android-ndk-${ANDROID_NDK_VERSION}-linux.zip
15
 
 
16
  ENV PATH ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
17
 
 
18
  WORKDIR /app
19
 
20
+ # Настройка Go
 
21
  ENV GOTOOLCHAIN=auto
22
  RUN go mod init vless-client
23
 
24
+ # Исправленный код main.go
 
25
  RUN cat <<EOF > main.go
26
  package main
27
 
 
53
 
54
  configStr := C.GoString(configContent)
55
 
56
+ // 1. Декодируем JSON в структуру conf.Config
57
+ confConfig, err := serial.DecodeJSONConfig(strings.NewReader(configStr))
58
  if err != nil {
59
+ return C.CString("Config parse error: " + err.Error())
60
  }
61
 
62
+ // 2. !!! ВАЖНО !!! Конвертируем conf.Config в core.Config
63
+ coreConfig, err := confConfig.Build()
64
+ if err != nil {
65
+ return C.CString("Config build error: " + err.Error())
66
+ }
67
+
68
+ // 3. Создаем инстанс ядра
69
+ coreInstance, err := core.New(coreConfig)
70
  if err != nil {
71
  return C.CString("Core create error: " + err.Error())
72
  }
 
109
  func main() {}
110
  EOF
111
 
112
+ # Зависимости
 
113
  RUN go get -u github.com/xtls/xray-core@latest
114
  RUN go mod tidy
115
 
116
+ # Компиляция
 
117
  RUN CGO_ENABLED=1 \
118
  GOOS=android \
119
  GOARCH=arm64 \
120
  CC=aarch64-linux-android33-clang \
121
  go build -buildmode=c-shared -o libvless.so main.go
122
 
123
+ # Выдача файла
124
  RUN mkdir /output && mv libvless.so /output/
 
 
125
  WORKDIR /output
126
  CMD ["python3", "-m", "http.server", "7860"]
127
  # --- END OF FILE Dockerfile ---