70 lines
2.8 KiB
Docker
70 lines
2.8 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
ARG XRAY_VERSION=latest
|
|
ARG XRAY_ZIP=Xray-linux-64.zip
|
|
ARG S6_OVERLAY_VERSION=3.2.1.0
|
|
ARG S6_OVERLAY_ARCH=x86_64
|
|
ARG SOURCE_VERSION=unknown
|
|
|
|
# Use USTC Ubuntu mirrors and install runtime tools.
|
|
RUN set -eux; \
|
|
if [ -f /etc/apt/sources.list ]; then \
|
|
sed -i \
|
|
-e 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' \
|
|
-e 's@//.*security.ubuntu.com@//mirrors.ustc.edu.cn@g' \
|
|
/etc/apt/sources.list; \
|
|
fi; \
|
|
if [ -d /etc/apt/sources.list.d ]; then \
|
|
find /etc/apt/sources.list.d -type f -name '*.sources' -exec sed -i \
|
|
-e 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' \
|
|
-e 's@//.*security.ubuntu.com@//mirrors.ustc.edu.cn@g' \
|
|
{} +; \
|
|
fi; \
|
|
apt-get update; \
|
|
apt-get install -y --no-install-recommends ca-certificates curl iptables unzip xz-utils; \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install s6-overlay as PID 1 / service supervisor.
|
|
RUN set -eux; \
|
|
s6_base="https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}"; \
|
|
curl -fsSL "${s6_base}/s6-overlay-noarch.tar.xz" -o /tmp/s6-overlay-noarch.tar.xz; \
|
|
curl -fsSL "${s6_base}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz" -o /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz; \
|
|
tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz; \
|
|
tar -C / -Jxpf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz; \
|
|
rm -f /tmp/s6-overlay-noarch.tar.xz /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz
|
|
|
|
# Install Xray from the official release archive.
|
|
RUN set -eux; \
|
|
download_base="https://github.com/XTLS/Xray-core/releases"; \
|
|
if [ "$XRAY_VERSION" = "latest" ]; then \
|
|
download_url="$download_base/latest/download/$XRAY_ZIP"; \
|
|
else \
|
|
download_url="$download_base/download/$XRAY_VERSION/$XRAY_ZIP"; \
|
|
fi; \
|
|
curl -fsSL "$download_url" -o /tmp/xray.zip; \
|
|
unzip /tmp/xray.zip -d /tmp/xray; \
|
|
install -m 0755 /tmp/xray/xray /usr/local/bin/xray; \
|
|
mkdir -p /usr/local/share/xray /etc/xray; \
|
|
if [ -f /tmp/xray/geoip.dat ]; then install -m 0644 /tmp/xray/geoip.dat /usr/local/share/xray/geoip.dat; fi; \
|
|
if [ -f /tmp/xray/geosite.dat ]; then install -m 0644 /tmp/xray/geosite.dat /usr/local/share/xray/geosite.dat; fi; \
|
|
useradd --system --home-dir /nonexistent --shell /usr/sbin/nologin xray; \
|
|
rm -rf /tmp/xray /tmp/xray.zip
|
|
|
|
ENV XRAY_CONFIG=/etc/xray/config.json \
|
|
XRAY_GENERATED_CONFIG=/tmp/xray.generated.json \
|
|
XRAY_IPV6_ENABLED=0 \
|
|
XRAY_TRANSPARENT=1 \
|
|
XRAY_REDIRECT_PORT=12345
|
|
|
|
COPY scripts/ /usr/local/bin/scripts/
|
|
COPY rootfs/ /
|
|
|
|
RUN chmod +x \
|
|
/usr/local/bin/scripts/*.sh \
|
|
/etc/cont-init.d/* \
|
|
/etc/cont-finish.d/*; \
|
|
printf '%s\n' "${SOURCE_VERSION}" > /usr/local/share/ubuntu-xray-source-version
|
|
|
|
ENTRYPOINT ["/init"]
|
|
CMD ["/bin/bash"]
|