Gitlab -> Docker -> другая машина. Можно ли автоматизировать?

Ссылка скопирована
1 ответ

У меня есть проект на Vue3. Он залит на репозиторий на локальном Гитлабе.
Проект собран в Docker-контейнер на компе с Windows 11, контейнер был залит на машину на Линуксе, там развёрнут и запущен.
Получается, что при каждом обновлении проекта я сперва пушу обновления на Гитлаб, заново собираю контейнер, пакую в tar.gz и заливаю на Линуксовую машину. И там заново разворачиваю и запускаю, предварительно грохнув старый контейнер.
Скажите, пожалуйста, можно ли как-то автоматизировать этот процесс? Может, есть уже готовые решения? Или проще самостоятельно написать некий скрипт, который при каждом пуше на Гитлаб выполняет все манипуляции с контейнером?

Дополнительно:

gitlab ci/cd vs github actions

  • https://youtu.be/tE3u1LquFcg?si=RVgfyEAf2gdkkqxe
  • Ответы:

    заново собираю контейнер, пакую в tar.gz и заливаю на Линуксовую машину.

    Может, есть уже готовые решения?

    gitlab ci/cd + gitlab container registry

    • Дополню: Harbor - отличнейшее решение и альтернатива вместо гитлаб регистри для управления контейнерами, куча фич, плюс умеет проксировать и кэшировать все остальные хабы.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Алексей Денисов Ответ

    Да, можно автоматизировать процесс развертывания приложения из GitLab на Docker и последующего развертывания на другой машине. Для этого можно использовать Continuous Integration (CI) и Continuous Deployment (CD) инструменты, такие как GitLab CI/CD, Jenkins, Travis CI, CircleCI и другие.

    В случае использования GitLab CI/CD, вы можете создать файл .gitlab-ci.yml в вашем репозитории, который будет содержать шаги для сборки и развертывания вашего приложения. Например, вы можете добавить шаги для сборки образа Docker, загрузки его в Docker Registry и развертывания на другой машине с помощью Docker Compose или Kubernetes.

    Пример файла .gitlab-ci.yml для автоматизации этого процесса:

    image: docker:latest
    
    services:
      - docker:dind
    
    stages:
      - build
      - deploy
    
    build:
      stage: build
      script:
        - docker build -t myapp .
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
        - docker push $CI_REGISTRY_IMAGE
    
    deploy:
      stage: deploy
      script:
        - ssh user@server 'docker pull registry.gitlab.com/mygroup/myapp:latest && docker-compose up -d'

    image: docker:latest services: - docker:dind stages: - build - deploy build: stage: build script: - docker build -t myapp . - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD - docker push $CI_REGISTRY_IMAGE deploy: stage: deploy script: - ssh user@server 'docker pull registry.gitlab.com/mygroup/myapp:latest && docker-compose up -d'

    В данном примере, на каждый коммит в репозиторий будет запускаться процесс сборки образа Docker и его развертывания на другой машине. Помимо этого, вы также можете настроить триггеры для запуска CI/CD процесса по расписанию или при наличии определенных условий.

    Таким образом, автоматизация процесса развертывания приложения из GitLab на Docker и другую машину позволит вам значительно упростить и ускорить процесс разработки и развертывания вашего приложения.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно