imgproxy-docker-base
imgproxy-docker-base copied to clipboard
Base Docker image with the latest imgproxy dependencies
trafficstars
imgproxy Docker base
What is this?
Base Docker image with the latest imgproxy dependencies. Ideal for imgproxy development and building its Docker images.
How to use this?
For development
Run this image with your development directory mounted:
docker run --rm -it \
-p 8080:8080 \
-v $(pwd):/app \
--name imgproxy_dev \
darthsim/imgproxy-base:latest
...and build your imgproxy as usual:
go build
For production
If you don't care about the size, you can just build your Docker image on top of this one:
FROM darthsim/imgproxy-base:latest
COPY . .
# We use bash here to load dynamically generated build environment from /root/.basrc
RUN ["bash", "-c", "go build -v -o /usr/local/bin/imgproxy"]
ENV VIPS_WARNING=0
ENV MALLOC_ARENA_MAX=2
RUN groupadd -r imgproxy && useradd -r -u 999 -g imgproxy imgproxy
USER 999
CMD ["imgproxy"]
EXPOSE 8080
But you probably want to use multistage build to minimize the final image, and it's a bit tricky. You need to take care of the following:
- Copy built dependencies from
/usr/local/lib. - Install ca-certificates, libsm6, liblzma5, libzstd1, and libpcre3 from the Debian repo.
- Set proper libraries paths.
Here is the working example:
FROM darthsim/imgproxy-base:latest
COPY . .
RUN ["bash", "-c", "go build -v -o /usr/local/bin/imgproxy"]
# ==================================================================================================
# Final image
FROM debian:bullseye-slim
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y --no-install-recommends \
bash \
ca-certificates \
libsm6 \
liblzma5 \
libzstd1 \
libpcre3 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=0 /usr/local/bin/imgproxy /usr/local/bin/
COPY --from=0 /usr/local/lib /usr/local/lib
ENV VIPS_WARNING=0
ENV MALLOC_ARENA_MAX=2
ENV LD_LIBRARY_PATH /usr/local/lib
RUN groupadd -r imgproxy && useradd -r -u 999 -g imgproxy imgproxy
USER 999
CMD ["imgproxy"]
EXPOSE 8080
Author
Sergey "DarthSim" Alexandrovich
License
imgproxy-base is licensed under the MIT license.
See LICENSE for the full license text.