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:
authorHossein Abaiyani <40549604+hosseinabaiyani@users.noreply.github.com>2023-05-11 12:38:44 +0300
committerGitHub <noreply@github.com>2023-05-11 12:38:44 +0300
commitad1aa5b2f9e194c84381212fc6f9896810050fe1 (patch)
treeb38ad3f852160f20e5dca21b6c0d527626a1a8fb
parent46ef8c503e33992b9c06352a2034d159d7a1a076 (diff)
Cleaner Docker file with much lighter base image (#387)
* updated dockerfile * updated dockerfile * Update Dockerfile added platform * added iran.dat * added iran.dat --------- Co-authored-by: Hossein Abaiyani <hossein.abaiyani@arvancloud.com>
-rwxr-xr-xDockerInit.sh22
-rw-r--r--Dockerfile75
2 files changed, 35 insertions, 62 deletions
diff --git a/DockerInit.sh b/DockerInit.sh
new file mode 100755
index 00000000..0b83457c
--- /dev/null
+++ b/DockerInit.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+if [ $1 == "amd64" ]; then
+ ARCH="64";
+ FNAME="amd64";
+elif [ $1 == "arm64" ]; then
+ ARCH="arm64-v8a"
+ FNAME="arm64";
+else
+ ARCH="64";
+ FNAME="amd64";
+fi
+mkdir -p build/bin
+cd build/bin
+wget "https://github.com/mhsanaei/xray-core/releases/latest/download/Xray-linux-${ARCH}.zip"
+unzip "Xray-linux-${ARCH}.zip"
+rm -f "Xray-linux-${ARCH}.zip" geoip.dat geosite.dat iran.dat
+mv xray "xray-linux-${FNAME}"
+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"
+
+cd ../../ \ No newline at end of file
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" ]