branding<icon:anchor color:blue> # branding<icon:anchor color:blue> GitHub Action: Docker Compose Action Release%20by%20tagRelease%20by%20dateCommitOpen%20IssuesDownloads
This action runs your compose file(s) 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. Logs of the Docker Compose services are logged using GitHub `core.ts` API before the cleanup. The log level can be set using the `services-log-level` input. The default is `debug`, which will only print logs if [debug mode](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/enabling-debug-logging) is switched on. Some extra options can be passed to the `docker compose down` command using the `down-flags` input. ```yaml - uses: hoverkraft-tech/compose-action@v0.0.0 with: # Description: Additional options to pass to `docker` command. # docker-flags: "" # 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 log level used for Docker Compose service logs. Can be one of # "debug", "info". # # Default: debug services-log-level: "" # 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** | | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------ | ------------ | | docker-flags | Additional options to pass to docker command. | | **false** | | 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** | | services-log-level | The log level used for Docker Compose service logs.
Can be one of "debug", "info". | debug | **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 ```yaml name: Docker Compose Action on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.2.2 - name: Run docker compose uses: hoverkraft-tech/compose-action@v2.0.1 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 ```yaml steps: - uses: actions/checkout@v4.2.2 - uses: hoverkraft-tech/compose-action@v2.0.1 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 ```yaml steps: # need checkout before using compose-action - uses: actions/checkout@v3 - uses: hoverkraft-tech/compose-action@v2.0.1 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](https://docs.docker.com/compose/reference/up/). ### 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](https://docs.docker.com/compose/reference/down/). ### 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](https://docs.docker.com/compose/reference/#command-options-overview-and-help). ```yaml steps: # need checkout before using compose-action - uses: actions/checkout@v3 - uses: hoverkraft-tech/compose-action@v2.0.1 with: compose-file: "./docker/docker-compose.yml" services: | helloworld2 helloworld3 ``` ### Example with multiple compose files Specify multiple compose files to use with the `docker compose` command. This is useful when you have a base compose file and additional files for different environments or configurations. ```yaml steps: # need checkout before using compose-action - uses: actions/checkout@v3 - uses: hoverkraft-tech/compose-action@v1.5.1 with: compose-file: | ./docker/docker-compose.yml ./docker/docker-compose.ci.yml ```