Dockerfile 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. FROM golang:1-buster
  2. LABEL maintainer="Sergey Alexandrovich <darthsim@gmail.com>"
  3. ARG VIPS_VERSION=8.9.2
  4. ARG IMAGEMAGICK_VERSION=7.0.9-20
  5. ARG QUANTIZR_VERSION=0.2.0
  6. ARG LIBHEIF_VERSION=1.6.2
  7. ARG LIBTIFF_VERSION=4.1.0
  8. ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig
  9. ENV LD_LIBRARY_PATH /lib64:/usr/lib64:/usr/local/lib
  10. ENV CGO_LDFLAGS_ALLOW "-s|-w"
  11. # Install dependencies
  12. RUN apt-get update \
  13. && apt-get install -y --no-install-recommends \
  14. curl \
  15. git \
  16. ca-certificates \
  17. build-essential \
  18. cmake \
  19. libtool \
  20. libglib2.0-dev \
  21. libexpat1-dev \
  22. libjpeg62-turbo-dev \
  23. libpng-dev \
  24. libwebp-dev \
  25. libgif-dev \
  26. librsvg2-dev \
  27. libexif-dev \
  28. liblcms2-dev \
  29. libde265-dev \
  30. liblzma-dev \
  31. libzstd-dev
  32. # Install quantizr
  33. RUN cd /root \
  34. && curl -Ls https://github.com/DarthSim/quantizr/releases/download/v$QUANTIZR_VERSION/quantizr-imagequant-compat_$QUANTIZR_VERSION-0.deb \
  35. > quantizr.deb \
  36. && apt-get install -y ./quantizr.deb
  37. # Build libheif
  38. RUN cd /root \
  39. && curl -Ls https://github.com/strukturag/libheif/releases/download/v$LIBHEIF_VERSION/libheif-$LIBHEIF_VERSION.tar.gz | tar -xz \
  40. && cd libheif-$LIBHEIF_VERSION \
  41. && ./configure \
  42. --prefix=/usr/local \
  43. --disable-static \
  44. --disable-go \
  45. && make install-strip
  46. # Build libtiff
  47. RUN cd /root \
  48. && curl -Ls https://gitlab.com/libtiff/libtiff/-/archive/v$LIBTIFF_VERSION/libtiff-v$LIBTIFF_VERSION.tar.gz | tar -xz \
  49. && cd libtiff-v$LIBTIFF_VERSION \
  50. && cmake . \
  51. && make \
  52. && make install
  53. # Build ImageMagick
  54. RUN cd /root \
  55. && curl -Ls https://github.com/ImageMagick/ImageMagick/archive/$IMAGEMAGICK_VERSION.tar.gz | tar -xz \
  56. && cd ImageMagick-$IMAGEMAGICK_VERSION \
  57. && ./configure \
  58. --enable-silent-rules \
  59. --disable-static \
  60. --disable-openmp \
  61. --disable-deprecated \
  62. --disable-docs \
  63. --with-threads \
  64. --without-magick-plus-plus \
  65. --without-utilities \
  66. --without-perl \
  67. --without-bzlib \
  68. --without-dps \
  69. --without-freetype \
  70. --without-fontconfig \
  71. --without-jbig \
  72. --without-jpeg \
  73. --without-lcms \
  74. --without-lzma \
  75. --without-png \
  76. --without-tiff \
  77. --without-wmf \
  78. --without-xml \
  79. --without-webp \
  80. --without-heic \
  81. --without-pango \
  82. && make install-strip \
  83. && rm -rf /usr/local/lib/libMagickWand-7.*
  84. # Build libvips
  85. RUN cd /root \
  86. && curl -Ls https://github.com/libvips/libvips/releases/download/v$VIPS_VERSION/vips-$VIPS_VERSION.tar.gz | tar -xz \
  87. && cd vips-$VIPS_VERSION \
  88. && ./configure \
  89. --without-python \
  90. --without-OpenEXR \
  91. --enable-debug=no \
  92. --disable-static \
  93. --disable-introspection \
  94. --enable-silent-rules \
  95. && make install-strip \
  96. && rm -rf /usr/local/lib/libvips-cpp.*
  97. WORKDIR /app
  98. COPY . .
  99. # Build imgproxy
  100. RUN go build -v -o /usr/local/bin/imgproxy
  101. # ==================================================================================================
  102. # Final image
  103. FROM debian:buster-slim
  104. LABEL maintainer="Sergey Alexandrovich <darthsim@gmail.com>"
  105. RUN apt-get update \
  106. && apt-get install -y --no-install-recommends \
  107. bash \
  108. ca-certificates \
  109. libsm6 \
  110. libglib2.0-0 \
  111. libexpat1 \
  112. libjpeg62-turbo \
  113. libpng16-16 \
  114. libwebp6 \
  115. libwebpmux3 \
  116. libwebpdemux2 \
  117. libgif7 \
  118. librsvg2-2 \
  119. libexif12 \
  120. liblcms2-2 \
  121. libde265-0 \
  122. liblzma5 \
  123. libzstd1 \
  124. && rm -rf /var/lib/apt/lists/*
  125. COPY --from=0 /usr/local/bin/imgproxy /usr/local/bin/
  126. COPY --from=0 /usr/local/lib /usr/local/lib
  127. COPY --from=0 /usr/lib/libquantizr.so /usr/local/lib
  128. ENV VIPS_WARNING=0
  129. ENV MALLOC_ARENA_MAX=2
  130. ENV LD_LIBRARY_PATH /lib64:/usr/lib64:/usr/local/lib
  131. CMD ["imgproxy"]
  132. EXPOSE 8080