diff --git a/HISTORY.rst b/HISTORY.rst index 6235359143..68f2580d71 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -77,7 +77,7 @@ - Update Docker deploy script. Use alpine postgres version. Support Docker networks and make it the default. Delete the containers to allow the script to be idempotent. - + Deploy a Redis container. 3.2.8 (2019-10-01) ================== diff --git a/contrib/scripts/install/docker.sh b/contrib/scripts/install/docker.sh index 80cbf0ae4e..af81926b8f 100755 --- a/contrib/scripts/install/docker.sh +++ b/contrib/scripts/install/docker.sh @@ -21,6 +21,9 @@ set -e : ${DOCKER_POSTGRES_CONTAINER:=mayan-edms-postgres} : ${DOCKER_POSTGRES_VOLUME:=/docker-volumes/mayan-edms/postgres} : ${DOCKER_POSTGRES_PORT:=5432} +: ${DOCKER_REDIS_IMAGE:=redis:5.0-alpine} +: ${DOCKER_REDIS_CONTAINER:=mayan-edms-redis} +: ${DOCKER_REDIS_PORT:=6379} : ${DOCKER_MAYAN_IMAGE:=mayanedms/mayanedms:latest} : ${DOCKER_MAYAN_CONTAINER:=mayan-edms} : ${DOCKER_MAYAN_VOLUME:=/docker-volumes/mayan-edms/media} @@ -54,6 +57,9 @@ echo "DOCKER_POSTGRES_IMAGE: $DOCKER_POSTGRES_IMAGE" echo "DOCKER_POSTGRES_CONTAINER: $DOCKER_POSTGRES_CONTAINER" echo "DOCKER_POSTGRES_VOLUME: $DOCKER_POSTGRES_VOLUME" echo "DOCKER_POSTGRES_PORT: $DOCKER_POSTGRES_PORT" +echo "DOCKER_REDIS_IMAGE: $DOCKER_REDIS_IMAGE" +echo "DOCKER_REDIS_CONTAINER: $DOCKER_REDIS_CONTAINER" +echo "DOCKER_REDIS_PORT: $DOCKER_REDIS_PORT" echo "DOCKER_MAYAN_IMAGE: $DOCKER_MAYAN_IMAGE" echo "DOCKER_MAYAN_CONTAINER: $DOCKER_MAYAN_CONTAINER" echo "DOCKER_MAYAN_VOLUME: $DOCKER_MAYAN_VOLUME" @@ -79,20 +85,23 @@ if [ -z `which docker` ]; then fi echo -n "* Removing existing Mayan EDMS and PostgreSQL containers (no data will be lost)..." -true || docker stop $DOCKER_MAYAN_CONTAINER >/dev/null 2>&1 -true || docker rm $DOCKER_MAYAN_CONTAINER >/dev/null 2>&1 -true || docker stop $DOCKER_POSTGRES_CONTAINER >/dev/null 2>&1 -true || docker rm $DOCKER_POSTGRES_CONTAINER >/dev/null 2>&1 +docker rm -f $DOCKER_REDIS_CONTAINER >/dev/null 2>&1 || true +docker rm -f $DOCKER_POSTGRES_CONTAINER >/dev/null 2>&1 || true +docker rm -f $DOCKER_MAYAN_CONTAINER >/dev/null 2>&1 || true echo "Done" if [ "$DELETE_VOLUMES" = true ]; then -echo -n "* Deleting Docker volumes in 5 seconds (warning: this delete all document data)..." +echo -n "* Deleting Docker volumes in 5 seconds (warning: this will delete all document data). Press CTRL+C to cancel..." sleep 5 -true || rm DOCKER_MAYAN_VOLUME -Rf -true || rm DOCKER_POSTGRES_VOLUME -Rf +rm DOCKER_MAYAN_VOLUME -Rf || true +rm DOCKER_POSTGRES_VOLUME -Rf || true echo "Done" fi +echo -n "* Pulling (downloading) the Redis Docker image..." +docker pull $DOCKER_REDIS_IMAGE > /dev/null +echo "Done" + echo -n "* Pulling (downloading) the PostgreSQL Docker image..." docker pull $DOCKER_POSTGRES_IMAGE > /dev/null echo "Done" @@ -111,17 +120,21 @@ fi if [ "$USE_DOCKER_NETWORK" = true ]; then NETWORK_ARGUMENT="--network=$DOCKER_NETWORK_NAME" POSTGRES_PORT_ARGUMENT="" + REDIS_PORT_ARGUMENT="" MAYAN_DATABASE_PORT_ARGUMENT="" MAYAN_DATABASE_HOST_ARGUMENT="-e MAYAN_DATABASE_HOST=$DOCKER_POSTGRES_CONTAINER" + MAYAN_BROKER_URL_ARGUMENT="-e MAYAN_BROKER_URL=redis://$DOCKER_REDIS_CONTAINER:6379/0" + MAYAN_CELERY_RESULT_BACKEND_ARGUMENT="-e MAYAN_CELERY_RESULT_BACKEND=redis://$DOCKER_REDIS_CONTAINER:6379/1" else NETWORK_ARGUMENT="" POSTGRES_PORT_ARGUMENT="-e $DOCKER_POSTGRES_PORT:5432" + REDIS_PORT_ARGUMENT="-e $DOCKER_REDIS_PORT:6379" MAYAN_DATABASE_PORT_ARGUMENT="-e MAYAN_DATABASE_PORT=$DOCKER_POSTGRES_PORT" MAYAN_DATABASE_HOST_ARGUMENT="-e MAYAN_DATABASE_HOST=172.17.0.1" + MAYAN_BROKER_URL_ARGUMENT="-e MAYAN_BROKER_URL=redis://172.17.0.1:6379/0" + MAYAN_CELERY_RESULT_BACKEND_ARGUMENT="-e MAYAN_CELERY_RESULT_BACKEND=redis://172.17.0.1:6379/1" fi -docker rm -f $DOCKER_POSTGRES_CONTAINER >/dev/null 2>&1 || true - echo -n "* Deploying the PostgreSQL container..." docker run -d \ --name $DOCKER_POSTGRES_CONTAINER \ @@ -135,12 +148,28 @@ $POSTGRES_PORT_ARGUMENT \ $DOCKER_POSTGRES_IMAGE >/dev/null echo "Done" +echo -n "* Deploying the Redis container..." +docker run -d \ +--name $DOCKER_REDIS_CONTAINER \ +$NETWORK_ARGUMENT \ +--restart=always \ +$REDIS_PORT_ARGUMENT \ +$DOCKER_REDIS_IMAGE \ +redis-server \ +--appendonly no \ +--databases 2 \ +--maxmemory 100mb \ +--maxmemory-policy allkeys-lru \ +--maxclients 500 \ +--save "" \ +--tcp-backlog 256 \ +>/dev/null +echo "Done" + echo -n "* Waiting for the PostgreSQL container to be ready (10 seconds)..." sleep 10 echo "Done" -docker rm -f $DOCKER_MAYAN_CONTAINER >/dev/null 2>&1 || true - echo -n "* Deploying Mayan EDMS container..." docker run -d \ --name $DOCKER_MAYAN_CONTAINER \ @@ -154,6 +183,8 @@ $MAYAN_DATABASE_PORT_ARGUMENT \ -e MAYAN_DATABASE_PASSWORD=$DATABASE_PASSWORD \ -e MAYAN_DATABASE_USER=$DATABASE_USER \ -e MAYAN_DATABASE_CONN_MAX_AGE=0 \ +$MAYAN_BROKER_URL_ARGUMENT \ +$MAYAN_CELERY_RESULT_BACKEND_ARGUMENT \ -v $DOCKER_MAYAN_VOLUME:/var/lib/mayan \ $DOCKER_MAYAN_IMAGE >/dev/null echo "Done"