DEV Community

loading...
Cover image for Deploy Docker image to Heroku with CicleCI

Deploy Docker image to Heroku with CicleCI

Takahiro Kudo
Web Apps Engineer👨🏻‍💻🇯🇵
・2 min read

Heroku is a functional PaaS that can deploy the Docker image, and CircleCI is also useful SaaS for CI/CD.

In this post, I show an example of CircleCI config which deploys the Docker image to Heroku.

Actually, I had trouble when setting it up. 🤣

Prerequisite

  • Code repository and CircleCI had already connected
  • Created Heroku app for deploying the Docker image
  • Generated Heroku API Key in Manage Account view on Heroku

Set up

Environment Variable

Set environment variables on your project settings in CircleCI.

Name Value
HEROKU_API_KEY Your Heroku API Key
HEROKU_APP_NAME Heroku app name for deploying the Docker image

config.yml

Modify config.yml below.

jobs:
  # Build the docker image and run tests.
  build_and_test:
    docker:
      - image: cimg/base:2021.07
    steps:
      # For using docker commands.
      - setup_remote_docker:
          version: 19.03.13

      # Build the docker image
      - checkout
      - run: docker build -t webapp .

      # Run tests.
      - run:
          command: docker run webapp python3 tests.py

  # Build the docker image and deploy it to Heroku.
  build_and_deploy:
    docker:
      - image: cimg/base:2021.07
    steps:
      # For using docker commands.
      - setup_remote_docker:
          version: 19.03.13

      # Build the docker image
      - checkout
      - run: docker build .

      # Deploy to Heroku
      - heroku/install
      - run: heroku container:login
      - heroku/push-docker-image:
          process-types: web
      - heroku/release-docker-image:
          process-types: web

orbs:
  # For using Heroku CLI commands.
  heroku: circleci/heroku@1.2.6

version: 2.1
workflows:
  heroku_deploy:
    jobs:
      - build_and_test
      - build_and_deploy:
          requires:
            # Deploy after testing.
            - build_and_test
Enter fullscreen mode Exit fullscreen mode

Test

Example codes are in this repository.

Refs.

Thanks!😆

Discussion (0)