В настоящее время я работаю над сценарием оболочки, который используется для создания образов докера и перезапуска контейнеров, запущенных на удаленном хосте. ниже приведена сокращенная версия кода.
#!/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
на удаленных хостах.