# Use an official Rust image as the base FROM rust:latest # Install necessary packages RUN apt-get update && apt-get install -y \ libudev-dev \ iproute2 \ iputils-ping \ net-tools \ bridge-utils \ iptables \ supervisor \ && rm -rf /var/lib/apt/lists/* # Clone the xbnet repository RUN git clone https://github.com/jgoerzen/xbnet.git /usr/src/xbnet # Build xbnet WORKDIR /usr/src/xbnet RUN cargo build --release # Copy the built binary to /usr/local/bin (makes it accessible from anywhere in the OS) RUN cp target/release/xbnet /usr/local/bin/xbnet # Copy the entrypoint script COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh # Copy the supervisor config file COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf # Copy the health check script from local ./scripts/ to container root / COPY ./scripts/health_check.sh /health_check.sh RUN chmod +x /health_check.sh # Add the health check HEALTHCHECK CMD /health_check.sh || exit 1 # Start supervisord as the main command CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]