diff options
| author | Hossein Abaiyani <40549604+hosseinabaiyani@users.noreply.github.com> | 2023-05-11 12:38:44 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-11 12:38:44 +0300 |
| commit | ad1aa5b2f9e194c84381212fc6f9896810050fe1 (patch) | |
| tree | b38ad3f852160f20e5dca21b6c0d527626a1a8fb | |
| parent | 46ef8c503e33992b9c06352a2034d159d7a1a076 (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-x | DockerInit.sh | 22 | ||||
| -rw-r--r-- | Dockerfile | 75 |
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 @@ -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" ] |
