Administrator manual

Installation

imgproxy explains various kinds how to install its service.

Link: https://docs.imgproxy.net/#/installation

Docker in Google Cloud Run

I have created an extremely simple Dockerfile:

FROM darthsim/imgproxy:latest

# Set KEY/SALT as env vars in Google Cloud or by .env file, but not her in Dockerfile
ENV IMGPROXY_KEY=[SameKeyAsConfiguredInExtensionSettings]
ENV IMGPROXY_SALT=[SameSaltAsConfiguredInExtensionSettings]

# PREVENT blocking imgproxy while processing big files or slow internet connection
ENV IMGPROXY_READ_TIMEOUT=10
ENV IMGPROXY_WRITE_TIMEOUT=10

# max allowed mega pixel (resolution)
ENV IMGPROXY_MAX_SRC_RESOLUTION=20.0
ENV IMGPROXY_MAX_SRC_FILE_SIZE=134217728

# Only resize first frame of animated images
ENV IMGPROXY_MAX_ANIMATION_FRAMES=1

ENV IMGPROXY_QUALITY=80
ENV IMGPROXY_GZIP_COMPRESSION=5
ENV IMGPROXY_USE_ETAG=true

# These are some performance properties I have found in imgproxy docu
ENV IMGPROXY_DOWNLOAD_BUFFER_SIZE=8388608
ENV IMGPROXY_GZIP_BUFFER_SIZE=8388608
ENV IMGPROXY_FREE_MEMORY_INTERVAL=30
ENV IMGPROXY_DEVELOPMENT_ERRORS_MODE=true

# Google Cloud Run needs internal port 8080 by default
EXPOSE 8080

Build the docker image:

docker build -t imgproxy:0.0.1 .

Tag the docker image

docker tag imgproxy:0.0.1 eu.gcr.io/[GC Project ID]/imgproxy:0.0.1

Push the image to docker container registry

Link: https://cloud.google.com/container-registry/docs/pushing-and-pulling?hl=de

docker push eu.gcr.io/[GC Project ID]/imgproxy:0.0.1

Now you can use this docker image in Google Cloud Run. Use the default port of 8080 as configured in Dockerfile. Configure the concurrent requests to an instance and the min. and max. amount of available instances. IMO RAM of 128-256 should be enough. Use the generated public URL in Extension Setting of typo3_image_proxy.