Как получить докер-образ развертывания на героку через Circleci

У меня есть приложение django, работающее локально, и я настроил проект на CircleCi с изображениями python и postgres. Если я правильно понимаю, что происходит, CircleCi будет использовать изображения для создания контейнера для тестирования моего приложения с базой данных кода. Затем я использую job heroku/deploy-via-git, чтобы развернуть его на Heroku, когда тесты будут пройдены.

Теперь я думаю, что Heroku тоже использует некоторые изображения для запуска приложения.

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

Вот мой файл конфигурации CircleCi

version: 2.1

docker-auth: &docker-auth
  auth:
    username: $DOCKERHUB_USERNAME
    password: $DOCKERHUB_PASSWORD

orbs:
  python: circleci/python@1.5.0
  heroku: circleci/heroku@0.0.10

jobs:
  build-and-test:
    docker:
      - image: cimg/python:3.10.2
      - image: cimg/postgres:14.1
        environment:
          POSTGRES_USER: theophile

    steps:
      - checkout
      - run:
          command: pip install -r requirements.txt
          name: Install Deps 
      - run:
          name: Run MIGRATE
          command: python manage.py migrate 
      - run:
          name: Run loaddata from Json
          command: python manage.py loaddata datadump.json
      - run:
          name: Run tests
          command: pytest

          
workflows:
  heroku_deploy:
    jobs:
      - build-and-test
      - heroku/deploy-via-git:
          requires:
              - build-and-test

Я не знаю, возможно ли это, если нет, то как лучше поступить? (предполагаю, что вариантов много)

Я подумывал создать образ из своего локального каталога с помощью docker compose, а затем использовать этот образ напрямую на CircleCi, тогда я смогу использовать этот образ на другом компьютере. Но сборка изображений в образы с помощью CircleCi кажется очень грязной, и я не уверен, как мне поступить.

Я пытался вытащить изображения из Heroku, но, похоже, я могу только вытащить код или получить/изменить базу данных, но я не могу получить сами сборки изображений.

Я надеюсь, что этот вопрос актуален и ясен, так как документация CircleCi и Heroku кажется неясной, и это мой первый пост в stackoverflow! заранее спасибо

[JS за 1 час] - 9. Асинхронный
[JS за 1 час] - 9. Асинхронный
JavaScript является однопоточным, то есть он может обрабатывать только одну задачу за раз. Для обработки длительных задач, таких как сетевые запросы,...
Топ-10 компаний-разработчиков PHP
Топ-10 компаний-разработчиков PHP
Если вы ищете надежных разработчиков PHP рядом с вами, вот список лучших компаний по разработке PHP.
Скраппинг поиска Apple App Store с помощью Python
Скраппинг поиска Apple App Store с помощью Python
📌Примечание: В этой статье я покажу вам, как скрапировать поиск Apple App Store и получить точно такой же результат, как на Apple iMac, потому что...
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
Подъем в javascript
Подъем в javascript
Hoisting - это поведение в JavaScript, при котором переменные и объявления функций автоматически "перемещаются" в верхнюю часть соответствующих...
Улучшение генерации файлов Angular
Улучшение генерации файлов Angular
Angular - это фреймворк. Вы можете создать практически любое приложение без использования сторонних библиотек.
0
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Платформа Heroku является частной, поэтому мы не можем быть уверены, как она работает внутри.

Мы знаем, что их стеки основаны на выпусках Ubuntu LTS , и мы знаем, что они используют сборочные пакеты с открытым исходным кодом для компиляции слагов приложений из исходного кода, но подробности о базовой инфраструктуре неясны. Они, конечно, не предоставляют базовые изображения, такие как heroku/python:3.11.0, для загрузки.

Если вы хотите использовать один и тот же образ локально, на CircleCI и Heroku, лучшим вариантом будет начать развертывание с Реестра контейнеров Heroku вместо Git. Это позволяет вам создавать образ локально, помещать его в реестр контейнеров и выпускать в качестве следующей версии вашего приложения.

Я предлагаю вам прочитать всю страницу документации, указанную выше, но краткая версия:

  1. Войдите в реестр контейнеров с помощью интерфейса командной строки Heroku:

    heroku container:login
    
  2. Предполагая, что у вас уже есть Dockerfile для вашего приложения, создайте и отправьте изображение:

    heroku container:push web
    

    В этом случае мы строим из Dockerfile и отправляем полученное изображение для использования в качестве web процесса.

  3. Выпустите свое приложение:

    heroku container:release web
    

Это базовое развертывание Docker с вашего локального компьютера, и даже если это не ваш окончательный план, я предлагаю вам начать с его работы.

Оттуда у вас есть варианты. Один из вариантов — перенести этот поток в CircleCI — продолжить создавать образы там, но пусть CircleCI отправит полученный контейнер в реестр контейнеров Heroku.

Другой вариант может быть таким, как вы предлагаете в своем вопросе: создавать образы локально и использовать их как с CircleCI, так и с Heroku.

Другие вопросы по теме