Skip to content

Commit 6a3b3fa

Browse files
petermeinbestlong
authored andcommitted
Added support for Thumbor (laradock#1373)
1 parent 61576c0 commit 6a3b3fa

4 files changed

Lines changed: 258 additions & 0 deletions

File tree

DOCUMENTATION/content/documentation/index.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,27 @@ docker-compose up -d minio
10431043

10441044

10451045

1046+
<br>
1047+
<a name="Use-Thumbor"></a>
1048+
## Use Thumbor
1049+
1050+
Thumbor is a smart imaging service. It enables on-demand crop, resizing and flipping of images. ([Thumbor](https://github.com/thumbor/thumbor))
1051+
1052+
1 - Configure Thumbor:
1053+
- Checkout all the options under the thumbor settings
1054+
1055+
1056+
2 - Run the Thumbor Container (`minio`) with the `docker-compose up` command. Example:
1057+
1058+
```bash
1059+
docker-compose up -d thumbor
1060+
```
1061+
1062+
3 - Navigate to an example image on `http://localhost:8000/unsafe/300x300/i.imgur.com/bvjzPct.jpg`
1063+
1064+
For more documentation on Thumbor visit the [Thumbor documenation](http://thumbor.readthedocs.io/en/latest/index.html) page
1065+
1066+
10461067
<br>
10471068
<a name="Use-AWS"></a>
10481069
## Use AWS

docker-compose.yml

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,122 @@ services:
707707
networks:
708708
- backend
709709

710+
### Thumbor #########################################
711+
thumbor:
712+
build: ./thumbor
713+
volumes:
714+
- ${DATA_SAVE_PATH}/thumbor/data:/data
715+
- ${DATA_SAVE_PATH}/thumbor/data:/logs
716+
ports:
717+
- "${THUMBOR_PORT}:8000"
718+
environment:
719+
- THUMBOR_LOG_FORMAT=${THUMBOR_LOG_FORMAT}
720+
- THUMBOR_LOG_DATE_FORMAT=${THUMBOR_LOG_DATE_FORMAT}
721+
- MAX_WIDTH=${MAX_WIDTH}
722+
- MAX_HEIGHT=${MAX_HEIGHT}
723+
- MIN_WIDTH=${MIN_WIDTH}
724+
- MIN_HEIGHT=${MIN_HEIGHT}
725+
- ALLOWED_SOURCES=${ALLOWED_SOURCES}
726+
- QUALITY=${QUALITY}
727+
- WEBP_QUALITY=${WEBP_QUALITY}
728+
- PNG_COMPRESSION_LEVEL=${PNG_COMPRESSION_LEVEL}
729+
- AUTO_WEBP=${AUTO_WEBP}
730+
- MAX_AGE=${MAX_AGE}
731+
- MAX_AGE_TEMP_IMAGE=${MAX_AGE_TEMP_IMAGE}
732+
- RESPECT_ORIENTATION=${RESPECT_ORIENTATION}
733+
- IGNORE_SMART_ERRORS=${IGNORE_SMART_ERRORS}
734+
- PRESERVE_EXIF_INFO=${PRESERVE_EXIF_INFO}
735+
- ALLOW_ANIMATED_GIFS=${ALLOW_ANIMATED_GIFS}
736+
- USE_GIFSICLE_ENGINE=${USE_GIFSICLE_ENGINE}
737+
- USE_BLACKLIST=${USE_BLACKLIST}
738+
- LOADER=${LOADER}
739+
- STORAGE=${STORAGE}
740+
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
741+
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
742+
- RESULT_STORAGE=${RESULT_STORAGE}
743+
- ENGINE=${ENGINE}
744+
- SECURITY_KEY=${SECURITY_KEY}
745+
- ALLOW_UNSAFE_URL=${ALLOW_UNSAFE_URL}
746+
- ALLOW_OLD_URLS=${ALLOW_OLD_URLS}
747+
- FILE_LOADER_ROOT_PATH=${FILE_LOADER_ROOT_PATH}
748+
- HTTP_LOADER_CONNECT_TIMEOUT=${HTTP_LOADER_CONNECT_TIMEOUT}
749+
- HTTP_LOADER_REQUEST_TIMEOUT=${HTTP_LOADER_REQUEST_TIMEOUT}
750+
- HTTP_LOADER_FOLLOW_REDIRECTS=${HTTP_LOADER_FOLLOW_REDIRECTS}
751+
- HTTP_LOADER_MAX_REDIRECTS=${HTTP_LOADER_MAX_REDIRECTS}
752+
- HTTP_LOADER_FORWARD_USER_AGENT=${HTTP_LOADER_FORWARD_USER_AGENT}
753+
- HTTP_LOADER_DEFAULT_USER_AGENT=${HTTP_LOADER_DEFAULT_USER_AGENT}
754+
- HTTP_LOADER_PROXY_HOST=${HTTP_LOADER_PROXY_HOST}
755+
- HTTP_LOADER_PROXY_PORT=${HTTP_LOADER_PROXY_PORT}
756+
- HTTP_LOADER_PROXY_USERNAME=${HTTP_LOADER_PROXY_USERNAME}
757+
- HTTP_LOADER_PROXY_PASSWORD=${HTTP_LOADER_PROXY_PASSWORD}
758+
- HTTP_LOADER_CA_CERTS=${HTTP_LOADER_CA_CERTS}
759+
- HTTP_LOADER_VALIDATE_CERTS=${HTTP_LOADER_VALIDATE_CERTS}
760+
- HTTP_LOADER_CLIENT_KEY=${HTTP_LOADER_CLIENT_KEY}
761+
- HTTP_LOADER_CLIENT_CERT=${HTTP_LOADER_CLIENT_CERT}
762+
- HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT=${HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT}
763+
- STORAGE_EXPIRATION_SECONDS=${STORAGE_EXPIRATION_SECONDS}
764+
- STORES_CRYPTO_KEY_FOR_EACH_IMAGE=${STORES_CRYPTO_KEY_FOR_EACH_IMAGE}
765+
- FILE_STORAGE_ROOT_PATH=${FILE_STORAGE_ROOT_PATH}
766+
- UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE}
767+
- UPLOAD_ENABLED=${UPLOAD_ENABLED}
768+
- UPLOAD_PHOTO_STORAGE=${UPLOAD_PHOTO_STORAGE}
769+
- UPLOAD_DELETE_ALLOWED=${UPLOAD_DELETE_ALLOWED}
770+
- UPLOAD_PUT_ALLOWED=${UPLOAD_PUT_ALLOWED}
771+
- UPLOAD_DEFAULT_FILENAME=${UPLOAD_DEFAULT_FILENAME}
772+
- MONGO_STORAGE_SERVER_HOST=${MONGO_STORAGE_SERVER_HOST}
773+
- MONGO_STORAGE_SERVER_PORT=${MONGO_STORAGE_SERVER_PORT}
774+
- MONGO_STORAGE_SERVER_DB=${MONGO_STORAGE_SERVER_DB}
775+
- MONGO_STORAGE_SERVER_COLLECTION=${MONGO_STORAGE_SERVER_COLLECTION}
776+
- REDIS_STORAGE_SERVER_HOST=${REDIS_STORAGE_SERVER_HOST}
777+
- REDIS_STORAGE_SERVER_PORT=${REDIS_STORAGE_SERVER_PORT}
778+
- REDIS_STORAGE_SERVER_DB=${REDIS_STORAGE_SERVER_DB}
779+
- REDIS_STORAGE_SERVER_PASSWORD=${REDIS_STORAGE_SERVER_PASSWORD}
780+
- REDIS_RESULT_STORAGE_SERVER_HOST=${REDIS_RESULT_STORAGE_SERVER_HOST}
781+
- REDIS_RESULT_STORAGE_SERVER_PORT=${REDIS_RESULT_STORAGE_SERVER_PORT}
782+
- REDIS_RESULT_STORAGE_SERVER_DB=${REDIS_RESULT_STORAGE_SERVER_DB}
783+
- REDIS_RESULT_STORAGE_SERVER_PASSWORD=${REDIS_RESULT_STORAGE_SERVER_PASSWORD}
784+
- MEMCACHE_STORAGE_SERVERS=${MEMCACHE_STORAGE_SERVERS}
785+
- MIXED_STORAGE_FILE_STORAGE=${MIXED_STORAGE_FILE_STORAGE}
786+
- MIXED_STORAGE_CRYPTO_STORAGE=${MIXED_STORAGE_CRYPTO_STORAGE}
787+
- MIXED_STORAGE_DETECTOR_STORAGE=${MIXED_STORAGE_DETECTOR_STORAGE}
788+
- META_CALLBACK_NAME=${META_CALLBACK_NAME}
789+
- DETECTORS=${DETECTORS}
790+
- FACE_DETECTOR_CASCADE_FILE=${FACE_DETECTOR_CASCADE_FILE}
791+
- OPTIMIZERS=${OPTIMIZERS}
792+
- JPEGTRAN_PATH=${JPEGTRAN_PATH}
793+
- PROGRESSIVE_JPEG=${PROGRESSIVE_JPEG}
794+
- RESULT_STORAGE_EXPIRATION_SECONDS=${RESULT_STORAGE_EXPIRATION_SECONDS}
795+
- RESULT_STORAGE_FILE_STORAGE_ROOT_PATH=${RESULT_STORAGE_FILE_STORAGE_ROOT_PATH}
796+
- RESULT_STORAGE_STORES_UNSAFE=${RESULT_STORAGE_STORES_UNSAFE}
797+
- REDIS_QUEUE_SERVER_HOST=${REDIS_QUEUE_SERVER_HOST}
798+
- REDIS_QUEUE_SERVER_PORT=${REDIS_QUEUE_SERVER_PORT}
799+
- REDIS_QUEUE_SERVER_DB=${REDIS_QUEUE_SERVER_DB}
800+
- REDIS_QUEUE_SERVER_PASSWORD=${REDIS_QUEUE_SERVER_PASSWORD}
801+
- SQS_QUEUE_KEY_ID=${SQS_QUEUE_KEY_ID}
802+
- SQS_QUEUE_KEY_SECRET=${SQS_QUEUE_KEY_SECRET}
803+
- SQS_QUEUE_REGION=${SQS_QUEUE_REGION}
804+
- USE_CUSTOM_ERROR_HANDLING=${USE_CUSTOM_ERROR_HANDLING}
805+
- ERROR_HANDLER_MODULE=${ERROR_HANDLER_MODULE}
806+
- ERROR_FILE_LOGGER=${ERROR_FILE_LOGGER}
807+
- ERROR_FILE_NAME_USE_CONTEXT=${ERROR_FILE_NAME_USE_CONTEXT}
808+
- SENTRY_DSN_URL=${SENTRY_DSN_URL}
809+
- TC_AWS_REGION=${TC_AWS_REGION}
810+
- TC_AWS_ENDPOINT=${TC_AWS_ENDPOINT}
811+
- TC_AWS_STORAGE_BUCKET=${TC_AWS_STORAGE_BUCKET}
812+
- TC_AWS_STORAGE_ROOT_PATH=${TC_AWS_STORAGE_ROOT_PATH}
813+
- TC_AWS_LOADER_BUCKET=${TC_AWS_LOADER_BUCKET}
814+
- TC_AWS_LOADER_ROOT_PATH=${TC_AWS_LOADER_ROOT_PATH}
815+
- TC_AWS_RESULT_STORAGE_BUCKET=${TC_AWS_RESULT_STORAGE_BUCKET}
816+
- TC_AWS_RESULT_STORAGE_ROOT_PATH=${TC_AWS_RESULT_STORAGE_ROOT_PATH}
817+
- TC_AWS_STORAGE_SSE=${TC_AWS_STORAGE_SSE}
818+
- TC_AWS_STORAGE_RRS=${TC_AWS_STORAGE_RRS}
819+
- TC_AWS_ENABLE_HTTP_LOADER=${TC_AWS_ENABLE_HTTP_LOADER}
820+
- TC_AWS_ALLOWED_BUCKETS=${TC_AWS_ALLOWED_BUCKETS}
821+
- TC_AWS_STORE_METADATA=${TC_AWS_STORE_METADATA}
822+
networks:
823+
- frontend
824+
- backend
825+
710826
### AWS EB-CLI ################################################
711827
aws:
712828
build:

env-example

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,122 @@ CADDY_CONFIG_PATH=./caddy/caddy
365365

366366
LARAVEL_ECHO_SERVER_PORT=6001
367367

368+
### DOCKER-SYNC ########################################################################################################
369+
370+
# osx: 'native_osx' (default)
371+
# windows: 'unison'
372+
# linux: docker-sync not required
373+
374+
DOCKER_SYNC_STRATEGY=native_osx
375+
376+
### THUMBOR ############################################################################################################
377+
378+
THUMBOR_PORT=8000
379+
THUMBOR_LOG_FORMAT="%(asctime)s %(name)s:%(levelname)s %(message)s"
380+
THUMBOR_LOG_DATE_FORMAT="%Y-%m-%d %H:%M:%S"
381+
MAX_WIDTH=0
382+
MAX_HEIGHT=0
383+
MIN_WIDTH=1
384+
MIN_HEIGHT=1
385+
ALLOWED_SOURCES=[]
386+
QUALITY=80
387+
WEBP_QUALITY=None
388+
PNG_COMPRESSION_LEVEL=6
389+
AUTO_WEBP=False
390+
MAX_AGE=86400
391+
MAX_AGE_TEMP_IMAGE=0
392+
RESPECT_ORIENTATION=False
393+
IGNORE_SMART_ERRORS=False
394+
PRESERVE_EXIF_INFO=False
395+
ALLOW_ANIMATED_GIFS=True
396+
USE_GIFSICLE_ENGINE=False
397+
USE_BLACKLIST=False
398+
LOADER=thumbor.loaders.http_loader
399+
STORAGE=thumbor.storages.file_storage
400+
AWS_ACCESS_KEY_ID=
401+
AWS_SECRET_ACCESS_KEY=
402+
RESULT_STORAGE=thumbor.result_storages.file_storage
403+
ENGINE=thumbor.engines.pil
404+
SECURITY_KEY="MY_SECURE_KEY"
405+
ALLOW_UNSAFE_URL=True
406+
ALLOW_OLD_URLS=True
407+
FILE_LOADER_ROOT_PATH=/data/loader
408+
HTTP_LOADER_CONNECT_TIMEOUT=5
409+
HTTP_LOADER_REQUEST_TIMEOUT=20
410+
HTTP_LOADER_FOLLOW_REDIRECTS=True
411+
HTTP_LOADER_MAX_REDIRECTS=5
412+
HTTP_LOADER_FORWARD_USER_AGENT=False
413+
HTTP_LOADER_DEFAULT_USER_AGENT="Thumbor/5.2.1"
414+
HTTP_LOADER_PROXY_HOST=None
415+
HTTP_LOADER_PROXY_PORT=None
416+
HTTP_LOADER_PROXY_USERNAME=None
417+
HTTP_LOADER_PROXY_PASSWORD=None
418+
HTTP_LOADER_CA_CERTS=None
419+
HTTP_LOADER_VALIDATE_CERTS=True
420+
HTTP_LOADER_CLIENT_KEY=None
421+
HTTP_LOADER_CLIENT_CERT=None
422+
HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT=False
423+
STORAGE_EXPIRATION_SECONDS=2592000
424+
STORES_CRYPTO_KEY_FOR_EACH_IMAGE=False
425+
FILE_STORAGE_ROOT_PATH=/data/storage
426+
UPLOAD_MAX_SIZE=0
427+
UPLOAD_ENABLED=False
428+
UPLOAD_PHOTO_STORAGE=thumbor.storages.file_storage
429+
UPLOAD_DELETE_ALLOWED=False
430+
UPLOAD_PUT_ALLOWED=False
431+
UPLOAD_DEFAULT_FILENAME=image
432+
MONGO_STORAGE_SERVER_HOST=mongo
433+
MONGO_STORAGE_SERVER_PORT=27017
434+
MONGO_STORAGE_SERVER_DB=thumbor
435+
MONGO_STORAGE_SERVER_COLLECTION=images
436+
REDIS_STORAGE_SERVER_HOST=redis
437+
REDIS_STORAGE_SERVER_PORT=6379
438+
REDIS_STORAGE_SERVER_DB=0
439+
REDIS_STORAGE_SERVER_PASSWORD=None
440+
REDIS_RESULT_STORAGE_SERVER_HOST=redis
441+
REDIS_RESULT_STORAGE_SERVER_PORT=6379
442+
REDIS_RESULT_STORAGE_SERVER_DB=0
443+
REDIS_RESULT_STORAGE_SERVER_PASSWORD=None
444+
MEMCACHE_STORAGE_SERVERS=["localhost:11211",]
445+
MIXED_STORAGE_FILE_STORAGE=thumbor.storages.no_storage
446+
MIXED_STORAGE_CRYPTO_STORAGE=thumbor.storages.no_storage
447+
MIXED_STORAGE_DETECTOR_STORAGE=thumbor.storages.no_storage
448+
META_CALLBACK_NAME=None
449+
DETECTORS=[]
450+
FACE_DETECTOR_CASCADE_FILE=haarcascade_frontalface_alt.xml
451+
OPTIMIZERS=[]
452+
JPEGTRAN_PATH=/usr/bin/jpegtran
453+
PROGRESSIVE_JPEG=True
454+
FILTERS=["thumbor.filters.brightness", "thumbor.filters.contrast", "thumbor.filters.rgb", "thumbor.filters.round_corner", "thumbor.filters.quality", "thumbor.filters.noise", "thumbor.filters.watermark", "thumbor.filters.equalize", "thumbor.filters.fill", "thumbor.filters.sharpen", "thumbor.filters.strip_icc", "thumbor.filters.frame", "thumbor.filters.grayscale", "thumbor.filters.rotate", "thumbor.filters.format", "thumbor.filters.max_bytes", "thumbor.filters.convolution", "thumbor.filters.blur", "thumbor.filters.extract_focal", "thumbor.filters.no_upscale"]
455+
RESULT_STORAGE_EXPIRATION_SECONDS=0
456+
RESULT_STORAGE_FILE_STORAGE_ROOT_PATH=/data/result_storage
457+
RESULT_STORAGE_STORES_UNSAFE=False
458+
REDIS_QUEUE_SERVER_HOST=redis
459+
REDIS_QUEUE_SERVER_PORT=6379
460+
REDIS_QUEUE_SERVER_DB="0"
461+
REDIS_QUEUE_SERVER_PASSWORD=None
462+
SQS_QUEUE_KEY_ID=None
463+
SQS_QUEUE_KEY_SECRET=None
464+
SQS_QUEUE_REGION=us-east-1
465+
USE_CUSTOM_ERROR_HANDLING=False
466+
ERROR_HANDLER_MODULE=thumbor.error_handlers.sentry
467+
ERROR_FILE_LOGGER=None
468+
ERROR_FILE_NAME_USE_CONTEXT="False"
469+
SENTRY_DSN_URL=
470+
TC_AWS_REGION=eu-west-1
471+
TC_AWS_ENDPOINT=None
472+
TC_AWS_STORAGE_BUCKET=
473+
TC_AWS_STORAGE_ROOT_PATH=
474+
TC_AWS_LOADER_BUCKET=
475+
TC_AWS_LOADER_ROOT_PATH=
476+
TC_AWS_RESULT_STORAGE_BUCKET=
477+
TC_AWS_RESULT_STORAGE_ROOT_PATH=
478+
TC_AWS_STORAGE_SSE=False
479+
TC_AWS_STORAGE_RRS=False
480+
TC_AWS_ENABLE_HTTP_LOADER=False
481+
TC_AWS_ALLOWED_BUCKETS=False
482+
TC_AWS_STORE_METADATA=False
483+
368484
### SOLR ##################################################
369485

370486
SOLR_VERSION=5.5

thumbor/Dockerfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
FROM apsl/thumbor
2+
3+
CMD ["thumbor"]
4+
5+
EXPOSE 8000

0 commit comments

Comments
 (0)