Skip to content
Snippets Groups Projects
Select Git revision
  • b1ed876ced9d971902f886c08de4b857e6fff41c
  • main default protected
2 results

Dockerfile

Blame
  • Dockerfile 1.88 KiB
    FROM alpine:3.15 AS builder
    ARG RTORRENT_VERSION=0.9.8
    ARG LIBTORRENT_VERSION=0.13.8
    RUN apk add --no-cache \
        alpine-sdk \
        autoconf \
        automake \
        curl-dev \
        libsigc++-dev \
        libtool \
        linux-headers \
        ncurses-dev \
        openssl-dev \
        xmlrpc-c-dev \
        zlib-dev
    
    RUN git clone --branch v${RTORRENT_VERSION} --single-branch https://github.com/rakshasa/rtorrent.git /rtorrent
    RUN git clone --branch v${LIBTORRENT_VERSION} --single-branch https://github.com/rakshasa/libtorrent.git /libtorrent
    
    WORKDIR /libtorrent
    RUN ./autogen.sh && \
        ./configure \
            --prefix=/usr \
            --disable-debug \
            --disable-instrumentation && \
        make -j$(nproc) && \
        mkdir -p /build && \
        DESTDIR=/build make install && \
        make install
    
    WORKDIR /rtorrent
    RUN ./autogen.sh && \
        ./configure \
            --prefix=/usr \
            --disable-debug \
            --with-xmlrpc-c && \
        make -j$(nproc) && \
        mkdir -p /build && \
        DESTDIR=/build make install
    
    FROM alpine:3.15
    
    RUN apk add --no-cache \
        curl \
        libgcc \
        libstdc++ \
        musl \
        ncurses-libs \
        xmlrpc-c
    
    COPY --from=builder /build/usr/bin/rtorrent /usr/bin/rtorrent
    COPY --from=builder /build/usr/lib/libtorrent.so* /usr/lib/
    
    RUN adduser -u 1000 -D rtorrent && \
        addgroup rtorrent rtorrent && \
        mkdir -p /data && chown rtorrent /data && \
        mkdir -p /private && chown rtorrent /private
    
    USER rtorrent
    
    COPY src/rtorrent.rc /rtorrent.rc
    COPY entrypoint.sh /entrypoint.sh
    
    ENV RT_TRACKER_UDP="yes"
    ENV RT_DHT_MODE="disable"
    ENV RT_DHT_PORT=49160
    ENV RT_PROTO_PEX="no"
    ENV RT_MAX_UP=100
    ENV RT_MAX_UP_GLOBAL=250
    ENV RT_MIN_PEERS=20
    ENV RT_MAX_PEERS=60
    ENV RT_MIN_PEERS_SEED=30
    ENV RT_MAX_PEERS_SEED=80
    ENV RT_TRACKERS_WANT=80
    ENV RT_MEMORY_MAX="1800M"
    ENV RT_DAEMON="true"
    ENV RT_XMLRPC_BIND="0.0.0.0"
    ENV RT_XMLRPC_PORT="5000"
    
    VOLUME ["/data"]
    VOLUME ["/tmp"]
    
    ENTRYPOINT ["/entrypoint.sh"]