Мы реализовали деплой через GitLab CI
и docker-compose
. В процессе деплоя на удалённый сервер копируется файл docker-compose.yml
и файлы Dockerfile
и пр. для создания "вспомогательных" контейнеров типа nginx
и mysql
Всё работает как нужно. Беспокоят 2 момента: даунтайм и "мусорные" образы docker (те, что с <none>
в колонке TAG в docker images
)
Вот кусок файла .gitlab-ci.yml
, ответственный собственно на деплой на удалённый сервер:
.template-secure-copy: &secure-copy
stage: deploy
image: covex/alpine-git:1.0
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
script:
- ssh -p 22 $DEPLOY_USER@$DEPLOY_HOST 'set -e ;
rm -rf '"$DEPLOY_DIRECTORY"'_tmp ;
mkdir -p '"$DEPLOY_DIRECTORY"'_tmp'
- scp -P 22 -r build/* ''"$DEPLOY_USER"'@'"$DEPLOY_HOST"':'"$DEPLOY_DIRECTORY"'_tmp' # */ <-- в оригинале строка не закоментирована =)
- ssh -p 22 $DEPLOY_USER@$DEPLOY_HOST 'set -e ;
cd '"$DEPLOY_DIRECTORY"'_tmp ;
docker login -u gitlab-ci-token -p '"$CI_JOB_TOKEN"' '"$CI_REGISTRY"' ;
docker-compose pull ;
if [ -d '"$DEPLOY_DIRECTORY"' ]; then cd '"$DEPLOY_DIRECTORY"' && docker-compose down --rmi local && rm -rf '"$DEPLOY_DIRECTORY"'; fi ;
cp -r '"$DEPLOY_DIRECTORY"'_tmp '"$DEPLOY_DIRECTORY"' ;
cd '"$DEPLOY_DIRECTORY"' ;
docker-compose up -d --remove-orphans ;
docker-compose exec -T php phing app-deploy -Dsymfony.env=prod ;
rm -rf '"$DEPLOY_DIRECTORY"'_tmp'
tags:
- executor-docker
Даунтайм сейчас - это 1-2-3 минуты. Начинается он с docker-compose down ...
и до конца выполнения скрипта. Хочется его уменьшить.
А как сделать так, чтобы "мусорные" образы docker не появлялись - я вообще не понял. Про docker image prune
знаю, хочется не очищать, а не захламлять.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем, приветкак сделать первые два элемента массива с классами horizontal и vertical, а следующие два наоборот vertical и horizontal и повторить с начала
Задачей есть приложение, которое будет открывать xls-файл, редактировать по шаблону в нём выбранную колонку (в данном случае дату) и сохранять...
Стало интересно, как читать стандартФормальные правила типа BNF, EBNF, Z, ASN