Skip to content

hoverkraft-tech/compose-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

branding<icon:anchor color:gray-dark>

branding<icon:anchor color:gray-dark> GitHub Action: Docker Compose Action

Release%20by%20tagRelease%20by%20dateCommitOpen%20IssuesDownloads

This action runs your docker-compose file and clean up before action finished

Usage

Action

The action will run docker-compose up to start the services defined in the given compose file(s). The compose file(s) can be specified using the compose-file input. Some extra options can be passed to the docker-compose up command using the up-flags input.

Post hook

On post hook, the action will run docker-compose down to clean up the services. In debug mode, the logs of the running services are printed before the cleanup.

Some extra options can be passed to the docker-compose down command using the down-flags input.

- uses: hoverkraft-tech/[email protected]
  with:
    # Description: Path to compose file(s). It can be a list of files. It can be
    # absolute or relative to the current working directory (cwd).
    #
    # Default: ./docker-compose.yml
    compose-file: ""

    # Description: Services to perform docker-compose up.
    #
    services: ""

    # Description: Additional options to pass to `docker-compose up` command.
    #
    # Default:
    up-flags: ""

    # Description: Additional options to pass to `docker-compose down` command.
    #
    # Default:
    down-flags: ""

    # Description: Additional options to pass to `docker-compose` command.
    #
    # Default:
    compose-flags: ""

    # Description: Current working directory
    #
    # Default: ${{ github.workspace }}
    cwd: ""

    # Description: Compose version to use. If null (default), it will use the current
    # installed version. If "latest", it will install the latest version.
    #
    compose-version: ""

    # Description: The GitHub token used to create an authenticated client (to fetch
    # the latest version of docker-compose).
    #
    # Default: ${{ github.token }}
    github-token: ""

Inputs

Input Description Default Required
compose-file Path to compose file(s). It can be a list of files. It can be absolute or relative to the current working directory (cwd). ./docker-compose.yml false
services Services to perform docker-compose up. false
up-flags Additional options to pass to docker-compose up command. false
down-flags Additional options to pass to docker-compose down command. false
compose-flags Additional options to pass to docker-compose command. false
cwd Current working directory ${{ github.workspace }} false
compose-version Compose version to use.
If null (default), it will use the current installed version.
If "latest", it will install the latest version.
false
github-token The GitHub token used to create an authenticated client (to fetch the latest version of docker-compose). ${{ github.token }} false

Examples

Example using in a full workflow

name: Docker Compose Action

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Run docker-compose
        uses: hoverkraft-tech/[email protected]
        with:
          compose-file: "./docker/docker-compose.yml"

      - name: Execute tests in the running services
        run: |
          docker-compose exec test-app pytest

Example Using environment variables

steps:
  - uses: actions/checkout@v4
  - uses: hoverkraft-tech/[email protected]
    with:
      compose-file: "./docker/docker-compose.yml"
    env:
      CUSTOM_VARIABLE: "test"

Example using services

Perform docker-compose up to some given service instead of all of them

steps:
  # need checkout before using compose-action
  - uses: actions/checkout@v3
  - uses: hoverkraft-tech/[email protected]
    with:
      compose-file: "./docker/docker-compose.yml"
      services: |
        helloworld2
        helloworld3

Example using up-flags

Specify flags to pass to the docker-compose up. Default is none. Can be used to pass the --build flag, for example, if you want persistent volumes to be deleted as well during cleanup. A full list of flags can be found in the docker-compose up documentation.

Example using down-flags

Specify flags to pass to the docker-compose down command during cleanup. Default is none. Can be used to pass the --volumes flag, for example, if you want persistent volumes to be deleted as well during cleanup. A full list of flags can be found in the docker-compose down documentation.

Example using compose-flags

Specify flags to pass to the docker-compose command. Default is none. A full list of flags can be found in the docker-compose documentation.

steps:
  # need checkout before using compose-action
  - uses: actions/checkout@v3
  - uses: hoverkraft-tech/[email protected]
    with:
      compose-file: "./docker/docker-compose.yml"
      services: |
        helloworld2
        helloworld3