Matteo Scandolo | a6a3aee | 2019-11-26 13:30:14 -0700 | [diff] [blame] | 1 | # |
| 2 | # This Dockerfile builds a recent curl with HTTP/2 client support, using |
| 3 | # a recent nghttp2 build. |
| 4 | # |
| 5 | # See the Makefile for how to tag it. If Docker and that image is found, the |
| 6 | # Go tests use this curl binary for integration tests. |
| 7 | # |
| 8 | |
| 9 | FROM ubuntu:trusty |
| 10 | |
| 11 | RUN apt-get update && \ |
| 12 | apt-get upgrade -y && \ |
| 13 | apt-get install -y git-core build-essential wget |
| 14 | |
| 15 | RUN apt-get install -y --no-install-recommends \ |
| 16 | autotools-dev libtool pkg-config zlib1g-dev \ |
| 17 | libcunit1-dev libssl-dev libxml2-dev libevent-dev \ |
| 18 | automake autoconf |
| 19 | |
| 20 | # The list of packages nghttp2 recommends for h2load: |
| 21 | RUN apt-get install -y --no-install-recommends make binutils \ |
| 22 | autoconf automake autotools-dev \ |
| 23 | libtool pkg-config zlib1g-dev libcunit1-dev libssl-dev libxml2-dev \ |
| 24 | libev-dev libevent-dev libjansson-dev libjemalloc-dev \ |
| 25 | cython python3.4-dev python-setuptools |
| 26 | |
| 27 | # Note: setting NGHTTP2_VER before the git clone, so an old git clone isn't cached: |
| 28 | ENV NGHTTP2_VER 895da9a |
| 29 | RUN cd /root && git clone https://github.com/tatsuhiro-t/nghttp2.git |
| 30 | |
| 31 | WORKDIR /root/nghttp2 |
| 32 | RUN git reset --hard $NGHTTP2_VER |
| 33 | RUN autoreconf -i |
| 34 | RUN automake |
| 35 | RUN autoconf |
| 36 | RUN ./configure |
| 37 | RUN make |
| 38 | RUN make install |
| 39 | |
| 40 | WORKDIR /root |
| 41 | RUN wget http://curl.haxx.se/download/curl-7.45.0.tar.gz |
| 42 | RUN tar -zxvf curl-7.45.0.tar.gz |
| 43 | WORKDIR /root/curl-7.45.0 |
| 44 | RUN ./configure --with-ssl --with-nghttp2=/usr/local |
| 45 | RUN make |
| 46 | RUN make install |
| 47 | RUN ldconfig |
| 48 | |
| 49 | CMD ["-h"] |
| 50 | ENTRYPOINT ["/usr/local/bin/curl"] |
| 51 | |