В настоящее время я работаю над сценарием оболочки, который используется для создания образов докера и перезапуска контейнеров, запущенных на удаленном хосте. ниже приведена сокращенная версия кода.
#!/bin/bash -xe
# usages: ./deploy.sh [PROJECT_REPO] [DOCKER_IMAGE] [TARGET_HOST] [KEYPAIR_PATH]
PROJECT_REPO=$1
DOCKER_IMAGE=$2
TARGET_HOST=$3
KEYPAIR_PATH=$4
PROJECT_DIR=$(echo $PROJECT_REPO | cut -d'/' -f 2 | cut -d '.' -f 1)
CONTAINER=$PROJECT_DIR
USER="ubuntu"
git clone $PROJECT_REPO
cd $PROJECT_DIR
if docker build -t $DOCKER_IMAGE .; then
        docker push $DOCKER_IMAGE
        if ssh -o StrictHostKeyChecking=no -i $KEYPAIR_PATH  $USER@$TARGET_HOST -yes DOCKER_IMAGE=$DOCKER_IMAGE CONTAINER=$CONTAINER '\
        docker pull $DOCKER_IMAGE && \
        docker stop $CONTAINER
        docker rm $CONTAINER
        docker run -d --name=$CONTAINER  $DOCKER_IMAGE'; then
                echo "success"
        else
                echo "Failure"  
                exit 1
        fi
else
        echo "Error during building image"
        exit 1
fi
Я пытаюсь сделать этот сценарий обобщенным, чтобы его можно было использовать с различными проектами, запустив сценарий с подробными сведениями о проекте (URL-адрес хранилища, образ докера), но когда я попытался запустить сценарий, я получаю сообщение об ошибке с докером команды из-за пустых значений переменных окружения DOCKER_IMAGE и CONTAINER на удаленных хостах.  
