Как оптимизировать деплой через docker-compose?

184
02 июля 2017, 15:35

Мы реализовали деплой через 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 знаю, хочется не очищать, а не захламлять.

READ ALSO
Как сделать первые два элемента массива с классами odd и even а следующие два наоборот

Как сделать первые два элемента массива с классами odd и even а следующие два наоборот

Всем, приветкак сделать первые два элемента массива с классами horizontal и vertical, а следующие два наоборот vertical и horizontal и повторить с начала

214
Программа автоматизации Excel C++ Builder

Программа автоматизации Excel C++ Builder

Задачей есть приложение, которое будет открывать xls-файл, редактировать по шаблону в нём выбранную колонку (в данном случае дату) и сохранять...

213
Какая нотация используется в стандарте ISO 14882?

Какая нотация используется в стандарте ISO 14882?

Стало интересно, как читать стандартФормальные правила типа BNF, EBNF, Z, ASN

212