Docker Image for Nginx server for image processing with ngx_small_light.
It supports resizing/cropping/formatting (png
, webp
...etc) of images stored in local storages or AWS S3.
Please see https://github.com/cubicdaiya/ngx_small_light for more information about image processing.
latest
- Nginx 1.10.0
- ngx_small_light 0.7.3
- ImageMagick 6.8.6-8 (Q16) with WebP support
# Get the docker image
$ docker pull quay.io/wantedly/nginx-image-server
# Fetch an example image to try image-processing local image
$ curl -L https://raw.githubusercontent.com/wantedly/nginx-image-server/master/examples/example.jpg > \
/tmp/example.jpg
# Start the image server
$ docker run \
--rm \
-it \
--name nginx-image-server \
-p 80:80 \
-p 8090:8090 \
-v /tmp/example.jpg:/var/www/nginx/images/example.jpg \
-e "SERVER_NAME=image.example.com" \
-e "S3_HOST=<YOUR-BUCKET-NAME>.s3.amazonaws.com" \
quay.io/wantedly/nginx-image-server:latest
Then you can try image-processing by accessing
- Images in S3:
http://<YOUR-SERVER.com>/small_light(dh=400,da=l,ds=s)/<PATH-TO-IMAGE-IN-S3>
- Images in Local:
http://<YOUR-SERVER.com>/local/small_light(dh=400,da=l,ds=s)/images/example.jpg
And http://<YOUR-SERVER.com>:8090/status
retruns the nginx status.
You can build a docker image includes your own nginx.conf
:
FROM quay.io/wantedly/nginx-image-server
COPY nginx.conf /etc/nginx/nginx.conf
Then build with docker build -t your-nginx-image-server .
and run:
$ docker run \
-d \
--name your-nginx-image-server \
-p 80:80 \
your-nginx-image-server
Be sure to include daemon off;
in your custom configuration to run Nginx in the foreground.
Otherwise your container will stop immediately after starting.
# on your local machine
$ git clone https://github.com/wantedly/nginx-image-server.git && cd nginx-image-server
$ script/bootstrap
$ cp .env.sample .env
# .env
TIMEZONE=Asia/Tokyo
$ vagrant up
$ vi Dockerfile
# login to VM and test it
$ vagrant ssh
@core-01 $ cd share
@core-01 $ docker build -t=quay.io/wantedly/nginx-image-server .
@core-01 $ script/test
Behavior test with infrataster.
Test files are under test/feature
directory. You can run this test with follwing script:
$ script/test
Performance test with locust.
Test files are under test/performance
directory. You can run locust with follwing script:
# Run target container
$ script/run
# Export target IP
$ export TARGET_IP=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' nginx-image-server)
# Run locust as WebTool
$ script/run-locust -f locustfile.py -H http://${TARGET_IP}
# Run locust as CLI
$ script/run-locust -f locustfile.py -H http://${TARGET_IP} --no-web -c 5 -r 1 -n 10