3x-ui/Dockerfile
2023-05-08 10:04:47 +03:30

55 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Use the official Golang image as the base image
FROM --platform=$BUILDPLATFORM golang:1.20 as builder
ARG TARGETOS TARGETARCH
RUN echo "TARGETOS=$TARGETOS TARGETARCH=$TARGETARCH"
# Set up the working directory
WORKDIR /app
# Copy the Go modules and download the dependencies
COPY go.mod go.sum ./
RUN go mod download
RUN echo "GOOS=$TARGETOS GOARCH=$TARGETARCH" > /app/.env
# Copy the source code
COPY . .
# Build the X-ui binary
RUN CGO_ENABLED=۰ GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o xui-release-$TARGETARCH -v main.go
# Start a new stage using the base image
FROM ubuntu:20.04
ARG TARGETOS TARGETARCH
RUN echo "TARGETOS=$TARGETOS TARGETARCH=$TARGETARCH"
# Set up the working directory
WORKDIR /app
# Copy the X-ui binary and required files from the builder stage
COPY --from=builder /app/xui-release-$TARGETARCH /app/x-ui/xui-release
COPY --from=builder /app/.env /app/x-ui/.env
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 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-$TARGETARCH
WORKDIR /app
RUN chmod +x /app/x-ui/x-ui.sh
# Set the entrypoint
ENTRYPOINT ["/app/x-ui/xui-release"]