Files
builder/Ubuntu/Dockerfile
T
2026-05-17 01:39:44 +08:00

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"]