Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile75
1 files changed, 13 insertions, 62 deletions
diff --git a/Dockerfile b/Dockerfile
index be21bd15..6114d548 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,69 +1,20 @@
-# Use the official Golang image as the base image
-FROM --platform=$BUILDPLATFORM golang:1.20 as builder
-ARG TARGETOS TARGETARCH
-# Set up the working directory
+#Build latest x-ui from source
+FROM --platform=$BUILDPLATFORM golang:1.20.4-alpine AS builder
WORKDIR /app
-
-# Copy the Go modules and download the dependencies
-COPY go.mod go.sum ./
-RUN go mod download
-
-# Copy the source code
+ARG TARGETARCH
+RUN apk --no-cache --update add build-base gcc wget unzip
COPY . .
+RUN env CGO_ENABLED=1 go build -o build/x-ui main.go
+RUN ./DockerInit.sh "$TARGETARCH"
-RUN if [ "$TARGETARCH" = "arm64" ]; then apt update && apt install gcc-aarch64-linux-gnu -y; fi
-
-# Build the X-ui binary
-RUN if [ "$TARGETARCH" = "arm64" ]; then \
- CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc go build -o xui-release -v main.go; \
- elif [ "$TARGETARCH" = "amd64" ]; then \
- CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o xui-release -v main.go; \
- fi
-
-# Start a new stage using the base image
-FROM ubuntu:20.04
-
-# Set up the working directory
+#Build app image using latest x-ui
+FROM alpine
+ENV TZ=Asia/Tehran
WORKDIR /app
-# Copy the X-ui binary and required files from the builder stage
-COPY --from=builder /app/xui-release /app/x-ui/xui-release
-COPY x-ui.service /app/x-ui/x-ui.service
-COPY x-ui.sh /app/x-ui/x-ui.sh
-
-# Set up the runtime environment
-RUN apt-get update && apt-get install -y \
- wget \
- unzip \
- tzdata \
- ca-certificates \
- && rm -rf /var/lib/apt/lists/*
-
-WORKDIR /app/x-ui/bin
-
-# Download and set up the required files
-RUN arch=$(uname -m) && \
- if [ "$arch" = "aarch64" ]; then \
- wget https://github.com/mhsanaei/xray-core/releases/latest/download/Xray-linux-arm64-v8a.zip \
- && unzip Xray-linux-arm64-v8a.zip \
- && rm -f Xray-linux-arm64-v8a.zip geoip.dat geosite.dat iran.dat \
- && wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat \
- && wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat \
- && wget https://github.com/bootmortis/iran-hosted-domains/releases/latest/download/iran.dat \
- && mv xray xray-linux-arm64; \
- elif [ "$arch" = "x86_64" ]; then \
- wget https://github.com/mhsanaei/Xray-core/releases/latest/download/Xray-linux-64.zip \
- && unzip Xray-linux-64.zip \
- && rm -f Xray-linux-64.zip geoip.dat geosite.dat iran.dat \
- && wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat \
- && wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat \
- && wget https://github.com/bootmortis/iran-hosted-domains/releases/latest/download/iran.dat \
- && mv xray xray-linux-amd64; \
- fi
-
-WORKDIR /app/x-ui
-RUN chmod +x /app/x-ui/x-ui.sh
+RUN apk add ca-certificates tzdata
-# Set the entrypoint
-ENTRYPOINT ["/app/x-ui/xui-release"]
+COPY --from=builder /app/build/ /app/
+VOLUME [ "/etc/x-ui" ]
+ENTRYPOINT [ "/app/x-ui" ]