123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- FROM ubuntu:20.04 AS base
- RUN apt-get update \
- && apt-get upgrade -y \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- wget \
- build-essential \
- automake \
- autoconf \
- libtool \
- python3 \
- python3-numpy \
- zlib1g \
- zlib1g-dev \
- tmux \
- vim \
- dstat \
- htop
- RUN mkdir ~/code \
- ~/code/releases \
- ~/code/dev \
- ~/code/working \
- ~/build
- RUN cd /tmp \
- && wget --no-verbose https://github.com/openssl/openssl/archive/OpenSSL_1_1_1h.tar.gz \
- && echo "d1f723c1f6b6d1eaf26655caa50d2f60d4d33f4b04977b1da63def878f386fcc OpenSSL_1_1_1h.tar.gz" | sha256sum -c - \
- && tar -xzf OpenSSL_*.tar.gz \
- && rm OpenSSL_*.tar.gz \
- && mv openssl-OpenSSL_* ~/code/releases
- RUN cd ~/code/releases/openssl-OpenSSL_* \
- && ./config --shared --prefix="$HOME/build" \
- && make \
- && make install \
- && [ -f "$HOME/build/lib/libssl.so" ] && echo "OK" || echo "Not installed properly"
- RUN cd /tmp \
- && wget --no-verbose https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz \
- && echo "92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb libevent-2.1.12-stable.tar.gz" | sha256sum -c - \
- && tar -xzf libevent-2.1.12-stable.tar.gz \
- && rm libevent-2.1.12-stable.tar.gz \
- && mv libevent-*-stable ~/code/releases
- RUN cd ~/code/releases/libevent-*-stable \
- && ./configure --prefix="$HOME/build" --disable-openssl \
- && make "-j$(nproc)" \
- && make install
- RUN cd /tmp \
- && wget --no-verbose https://github.com/gperftools/gperftools/archive/gperftools-2.7.tar.gz \
- && echo "3a88b4544315d550c87db5c96775496243fb91aa2cea88d2b845f65823f3d38a gperftools-2.7.tar.gz" | sha256sum -c - \
- && tar -xzf gperftools-*.tar.gz \
- && rm gperftools-*.tar.gz \
- && mv gperftools-gperftools-* ~/code/releases
- RUN cd ~/code/releases/gperftools-gperftools-* \
- && ./autogen.sh \
- && ./configure --prefix="$HOME/build" \
- && make "-j$(nproc)" \
- && make install
- RUN cd /tmp \
- && wget --no-verbose https://github.com/jemalloc/jemalloc/archive/5.2.1.tar.gz \
- && mv 5.2.1.tar.gz jemalloc-5.2.1.tar.gz \
- && echo "ed51b0b37098af4ca6ed31c22324635263f8ad6471889e0592a9c0dba9136aea jemalloc-5.2.1.tar.gz" | sha256sum -c - \
- && tar -xzf jemalloc-*.tar.gz \
- && rm jemalloc-*.tar.gz \
- && mv jemalloc-5.2.1 ~/code/releases
- RUN cd ~/code/releases/jemalloc-* \
- && ./autogen.sh \
- && ./configure --prefix="$HOME/build" \
- && make "-j$(nproc)" \
- && make install
- RUN cd /tmp \
- && wget --no-verbose https://archive.torproject.org/tor-package-archive/tor-0.4.2.6.tar.gz \
- && echo "0500102433849bbe3231c590973d126c2d2d6b3943b4b9f9962bdb108436e6c4 tor-0.4.2.6.tar.gz" | sha256sum -c - \
- && tar -xzf tor-0.4.2.6.tar.gz \
- && rm tor-0.4.2.6.tar.gz \
- && mv tor-0.4.2.6 ~/code/releases/tor-0.4.2.6
- RUN cd ~/code/releases/tor-0.4.2.6 \
- && ./configure --disable-asciidoc --with-libevent-dir="$HOME/build" --with-openssl-dir="$HOME/build" \
- && LD_RUN_PATH="$HOME/build/lib" make "-j$(nproc)" \
- && ldd src/app/tor
- COPY tor /root/code/working/tor
- RUN cd ~/code/working/tor \
- && ./autogen.sh \
- && ./configure --disable-asciidoc --disable-unittests --with-libevent-dir="$HOME/build" --with-openssl-dir="$HOME/build" \
- && LD_RUN_PATH="$HOME/build/lib" make "-j$(nproc)" \
- && ldd src/app/tor
- ########################
- FROM base AS benchmarker
- RUN apt-get update \
- && apt-get upgrade -y \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- openssh-server
- COPY sshkey.pub /tmp/sshkey.pub
- RUN sed -i 's/#\?Port 22/Port 2222/g' /etc/ssh/sshd_config \
- && mkdir ~/.ssh \
- && chmod 700 ~/.ssh \
- && cat /tmp/sshkey.pub >> ~/.ssh/authorized_keys \
- && chmod 600 ~/.ssh/authorized_keys \
- && rm /tmp/sshkey.pub
- RUN cd /tmp \
- && wget --no-verbose https://archive.torproject.org/tor-package-archive/tor-0.4.2.6.tar.gz \
- && echo "0500102433849bbe3231c590973d126c2d2d6b3943b4b9f9962bdb108436e6c4 tor-0.4.2.6.tar.gz" | sha256sum -c - \
- && tar -xzf tor-0.4.2.6.tar.gz \
- && rm tor-0.4.2.6.tar.gz \
- && mv tor-0.4.2.6 ~/code/dev/tor-0.4.2.6-throughput-log
- COPY src/throughput-logging.patch /tmp
- RUN cd ~/code/dev/tor-0.4.2.6-throughput-log \
- && patch -p1 < /tmp/throughput-logging.patch \
- && rm /tmp/throughput-logging.patch \
- && ./configure --disable-asciidoc --with-libevent-dir="$HOME/build" --with-openssl-dir="$HOME/build" \
- && LD_RUN_PATH="$HOME/build/lib" make "-j$(nproc)" \
- && ldd src/app/tor
- ########################
- FROM base as controller
- RUN apt-get update \
- && apt-get upgrade -y \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- git \
- python3-dev \
- python3-pip \
- openssh-client
- COPY sshkey /root/.ssh/id_rsa
- RUN printf "\nHost *\n Port 2222\n StrictHostKeyChecking no\n" >> ~/.ssh/config
- RUN cd ~/code/dev \
- && git clone https://git.torproject.org/stem.git \
- && cd stem \
- && git checkout '1.8.0' \
- && pip3 install --user .
- COPY chutney /root/code/working/chutney
- RUN printf 'export CHUTNEY_DATA_DIR="/tmp/chutney-net"\n' >> ~/.bashrc
- RUN cd /tmp \
- && wget --no-verbose https://archive.torproject.org/tor-package-archive/tor-0.4.2.6.tar.gz \
- && echo "0500102433849bbe3231c590973d126c2d2d6b3943b4b9f9962bdb108436e6c4 tor-0.4.2.6.tar.gz" | sha256sum -c - \
- && tar -xzf tor-0.4.2.6.tar.gz \
- && rm tor-0.4.2.6.tar.gz \
- && mv tor-0.4.2.6 ~/code/dev/tor-0.4.2.6-fixed-controller
- COPY src/fixed-controller.patch /tmp
- RUN cd ~/code/dev/tor-0.4.2.6-fixed-controller \
- && patch -p1 < /tmp/fixed-controller.patch \
- && rm /tmp/fixed-controller.patch \
- && ./configure --disable-asciidoc --with-libevent-dir="$HOME/build" --with-openssl-dir="$HOME/build" \
- && LD_RUN_PATH="$HOME/build/lib" make "-j$(nproc)" \
- && ldd src/app/tor
- COPY . /root/code/working/tor-benchmarking
- RUN cd ~/code/working/tor-benchmarking \
- && make
|