{"id":13903260,"url":"https://github.com/cytopia/docker-terragrunt","last_synced_at":"2025-04-30T13:51:50.767Z","repository":{"id":38083974,"uuid":"192930543","full_name":"cytopia/docker-terragrunt","owner":"cytopia","description":"Alpine-based multistage-build version of Terragrunt and Terraform for reproducible usage in CI","archived":false,"fork":false,"pushed_at":"2025-02-24T12:02:32.000Z","size":177,"stargazers_count":41,"open_issues_count":1,"forks_count":11,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-30T16:45:34.267Z","etag":null,"topics":["alpine","awesome-ci","ci","continuous-integration","docker","docker-container","docker-image","dockerfile","multistage","multistage-docker","terraform","terragrunt"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cytopia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-20T14:02:36.000Z","updated_at":"2025-02-24T12:02:24.000Z","dependencies_parsed_at":"2024-02-08T04:35:14.756Z","dependency_job_id":"766431a4-8b4a-4336-a555-1e68ba23dd13","html_url":"https://github.com/cytopia/docker-terragrunt","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cytopia%2Fdocker-terragrunt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cytopia%2Fdocker-terragrunt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cytopia%2Fdocker-terragrunt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cytopia%2Fdocker-terragrunt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cytopia","download_url":"https://codeload.github.com/cytopia/docker-terragrunt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251714935,"owners_count":21631806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine","awesome-ci","ci","continuous-integration","docker","docker-container","docker-image","dockerfile","multistage","multistage-docker","terraform","terragrunt"],"created_at":"2024-08-06T22:01:57.430Z","updated_at":"2025-04-30T13:51:50.746Z","avatar_url":"https://github.com/cytopia.png","language":"Makefile","funding_links":[],"categories":["terraform"],"sub_categories":[],"readme":"# Docker image for `terragrunt`\n\n[![Tag](https://img.shields.io/github/tag/cytopia/docker-terragrunt.svg)](https://github.com/cytopia/docker-terragrunt/releases)\n[![](https://img.shields.io/badge/github-cytopia%2Fdocker--terragrunt-red.svg)](https://github.com/cytopia/docker-terragrunt \"github.com/cytopia/docker-terragrunt\")\n[![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT)\n\n[![lint](https://github.com/cytopia/docker-terragrunt/workflows/lint/badge.svg)](https://github.com/cytopia/docker-terragrunt/actions?query=workflow%3Alint)\n[![build](https://github.com/cytopia/docker-terragrunt/workflows/build/badge.svg)](https://github.com/cytopia/docker-terragrunt/actions?query=workflow%3Abuild)\n[![nightly](https://github.com/cytopia/docker-terragrunt/workflows/nightly/badge.svg)](https://github.com/cytopia/docker-terragrunt/actions?query=workflow%3Anightly)\n\n\n\u003e #### All [#awesome-ci](https://github.com/topics/awesome-ci) Docker images\n\u003e\n\u003e [ansible-lint][alint-git-lnk] **•**\n\u003e [ansible][ansible-git-lnk] **•**\n\u003e [awesome-ci][aci-git-lnk] **•**\n\u003e [bandit][bandit-git-lnk] **•**\n\u003e [black][black-git-lnk] **•**\n\u003e [checkmake][cm-git-lnk] **•**\n\u003e [eslint][elint-git-lnk] **•**\n\u003e [file-lint][flint-git-lnk] **•**\n\u003e [gofmt][gfmt-git-lnk] **•**\n\u003e [goimports][gimp-git-lnk] **•**\n\u003e [golint][glint-git-lnk] **•**\n\u003e [jsonlint][jlint-git-lnk] **•**\n\u003e [kubeval][kubeval-git-lnk] **•**\n\u003e [linkcheck][linkcheck-git-lnk] **•**\n\u003e [mypy][mypy-git-lnk] **•**\n\u003e [php-cs-fixer][pcsf-git-lnk] **•**\n\u003e [phpcbf][pcbf-git-lnk] **•**\n\u003e [phpcs][pcs-git-lnk] **•**\n\u003e [phplint][plint-git-lnk] **•**\n\u003e [pycodestyle][pycs-git-lnk] **•**\n\u003e [pydocstyle][pyds-git-lnk] **•**\n\u003e [pylint][pylint-git-lnk] **•**\n\u003e [terraform-docs][tfdocs-git-lnk] **•**\n\u003e [terragrunt-fmt][tgfmt-git-lnk] **•**\n\u003e [terragrunt][tg-git-lnk] **•**\n\u003e [yamlfmt][yfmt-git-lnk] **•**\n\u003e [yamllint][ylint-git-lnk]\n\nView **[Dockerfiles](https://github.com/cytopia/docker-terragrunt/blob/master/Dockerfiles/)** on GitHub.\n\n\n**Available Architectures:**  `amd64`, `i386`, `arm64`\n\nTiny Alpine-based multistage-build dockerized version of [Terragrunt](https://github.com/gruntwork-io/terragrunt)\u003csup\u003e[1]\u003c/sup\u003e\nand its compatible version of [Terraform](https://github.com/hashicorp/terraform)\u003csup\u003e[2]\u003c/sup\u003e.\n\n* \u003csub\u003e[1] Official project: https://github.com/gruntwork-io/terragrunt\u003c/sub\u003e\n* \u003csub\u003e[2] Official project: https://github.com/hashicorp/terraform\u003c/sub\u003e\n\n\n## :whale: Available Docker image versions\n\n[![](https://img.shields.io/docker/pulls/cytopia/terragrunt.svg)](https://hub.docker.com/r/cytopia/terragrunt)\n[![Docker](https://badgen.net/badge/icon/:latest?icon=docker\u0026label=cytopia/terragrunt)](https://hub.docker.com/r/cytopia/terragrunt)\n\n#### Rolling releaess\n\nThe following Docker image tags are rolling releases and are built and updated every night.\n\n[![nightly](https://github.com/cytopia/docker-terragrunt/workflows/nightly/badge.svg)](https://github.com/cytopia/docker-terragrunt/actions?query=workflow%3Anightly)\n\n\n| Docker Tag  | Git Ref   | Terraform    | Terragrunt   | Available Architectures                      |\n|-------------|-----------|--------------|--------------|----------------------------------------------|\n| `latest`    | master    | latest       | latest       | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.8-0.73`  | master    | **`1.8.x`**  | **`0.73.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.7-0.73`  | master    | **`1.7.x`**  | **`0.73.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.6-0.55`  | master    | **`1.6.x`**  | **`0.55.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.6-0.54`  | master    | **`1.6.x`**  | **`0.54.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.6-0.53`  | master    | **`1.6.x`**  | **`0.53.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.5-0.53`  | master    | **`1.5.x`**  | **`0.53.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.52`  | master    | **`1.5.x`**  | **`0.52.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.51`  | master    | **`1.5.x`**  | **`0.51.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.50`  | master    | **`1.5.x`**  | **`0.50.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.49`  | master    | **`1.5.x`**  | **`0.49.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.48`  | master    | **`1.5.x`**  | **`0.48.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.47`  | master    | **`1.5.x`**  | **`0.47.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.46`  | master    | **`1.5.x`**  | **`0.46.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.4-0.50`  | master    | **`1.4.x`**  | **`0.50.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.4-0.49`  | master    | **`1.4.x`**  | **`0.49.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.4-0.48`  | master    | **`1.4.x`**  | **`0.48.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.4-0.47`  | master    | **`1.4.x`**  | **`0.47.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.4-0.46`  | master    | **`1.4.x`**  | **`0.46.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.3-0.50`  | master    | **`1.3.x`**  | **`0.50.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.3-0.49`  | master    | **`1.3.x`**  | **`0.49.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.3-0.48`  | master    | **`1.3.x`**  | **`0.48.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.3-0.47`  | master    | **`1.3.x`**  | **`0.47.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.3-0.46`  | master    | **`1.3.x`**  | **`0.46.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.2-0.41`  | master    | **`1.2.x`**  | **`0.41.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.2-0.40`  | master    | **`1.2.x`**  | **`0.40.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.2-0.39`  | master    | **`1.2.x`**  | **`0.39.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.2-0.38`  | master    | **`1.2.x`**  | **`0.38.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.2-0.37`  | master    | **`1.2.x`**  | **`0.37.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.1-0.38`  | master    | **`1.1.x`**  | **`0.38.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.1-0.38`  | master    | **`1.1.x`**  | **`0.38.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.1-0.37`  | master    | **`1.1.x`**  | **`0.37.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.1-0.36`  | master    | **`1.1.x`**  | **`0.36.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.1-0.35`  | master    | **`1.1.x`**  | **`0.35.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `1.0-0.38`  | master    | **`1.0.x`**  | **`0.38.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.0-0.37`  | master    | **`1.0.x`**  | **`0.37.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.0-0.36`  | master    | **`1.0.x`**  | **`0.36.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.0-0.35`  | master    | **`1.0.x`**  | **`0.35.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.0-0.34`  | master    | **`1.0.x`**  | **`0.34.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `0.15-0.34` | master    | **`0.15.x`** | **`0.34.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.15-0.33` | master    | **`0.15.x`** | **`0.33.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.15-0.32` | master    | **`0.15.x`** | **`0.32.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.15-0.31` | master    | **`0.15.x`** | **`0.31.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.15-0.30` | master    | **`0.15.x`** | **`0.30.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `0.14-0.34` | master    | **`0.14.x`** | **`0.34.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.14-0.33` | master    | **`0.14.x`** | **`0.33.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.14-0.32` | master    | **`0.14.x`** | **`0.32.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.14-0.31` | master    | **`0.14.x`** | **`0.31.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.14-0.30` | master    | **`0.14.x`** | **`0.30.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `0.13-0.34` | master    | **`0.13.x`** | **`0.34.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.13-0.33` | master    | **`0.13.x`** | **`0.33.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.13-0.32` | master    | **`0.13.x`** | **`0.32.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.13-0.31` | master    | **`0.13.x`** | **`0.31.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.13-0.30` | master    | **`0.13.x`** | **`0.30.x`** | `amd64`, `i386`, `arm64`                     |\n|             |           |              |              |                                              |\n| `0.12-0.24` | master    | **`0.12.x`** | **`0.24.x`** | `amd64`, `i386`                              |\n| `0.12-0.23` | master    | **`0.12.x`** | **`0.23.x`** | `amd64`, `i386`                              |\n| `0.12-0.22` | master    | **`0.12.x`** | **`0.22.x`** | `amd64`, `i386`                              |\n| `0.12-0.21` | master    | **`0.12.x`** | **`0.21.x`** | `amd64`, `i386`                              |\n| `0.12-0.20` | master    | **`0.12.x`** | **`0.20.x`** | `amd64`, `i386`                              |\n| `0.12-0.19` | master    | **`0.12.x`** | **`0.19.x`** | `amd64`, `i386`                              |\n|             |           |              |              |                                              |\n| `0.11-0.18` | master    | **`0.11.x`** | **`0.18.x`** | `amd64`, `i386`                              |\n\n\n#### Point in time releases\n\nThe following Docker image tags are built once and can be used for reproducible builds. Its version never changes so you will have to update tags in your pipelines from time to time in order to stay up-to-date.\n\n[![build](https://github.com/cytopia/docker-terragrunt/workflows/build/badge.svg)](https://github.com/cytopia/docker-terragrunt/actions?query=workflow%3Abuild)\n\n| Docker Tag        | Git Ref      | Terraform     | Terragrunt   | Available Architectures                      |\n|-------------------|--------------|---------------|--------------|----------------------------------------------|\n| `latest-\u003ctag\u003e`    | tag: `\u003ctag\u003e` | latest        | latest       | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `1.5-0.50-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.5.x`**   | **`0.50.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.49-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.5.x`**   | **`0.49.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.48-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.5.x`**   | **`0.48.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.47-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.5.x`**   | **`0.47.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.5-0.46-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.5.x`**   | **`0.46.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `1.4-0.50-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.4.x`**   | **`0.50.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.4-0.49-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.4.x`**   | **`0.49.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.4-0.48-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.4.x`**   | **`0.48.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.4-0.47-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.4.x`**   | **`0.47.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.4-0.46-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.4.x`**   | **`0.46.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `1.3-0.50-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.3.x`**   | **`0.50.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.3-0.49-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.3.x`**   | **`0.49.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.3-0.48-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.3.x`**   | **`0.48.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.3-0.47-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.3.x`**   | **`0.47.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.3-0.46-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.3.x`**   | **`0.46.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `1.2-0.41-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.2.x`**   | **`0.41.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.2-0.40-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.2.x`**   | **`0.40.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.2-0.39-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.2.x`**   | **`0.39.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.2-0.38-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.2.x`**   | **`0.38.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.2-0.37-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.2.x`**   | **`0.37.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `1.1-0.39-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.1.x`**   | **`0.39.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.1-0.38-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.1.x`**   | **`0.38.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.1-0.37-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.1.x`**   | **`0.37.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.1-0.36-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.1.x`**   | **`0.36.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.1-0.35-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.1.x`**   | **`0.35.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `1.0-0.38-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.0.x`**   | **`0.38.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.0-0.37-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.0.x`**   | **`0.37.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.0-0.36-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.0.x`**   | **`0.36.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.0-0.35-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.0.x`**   | **`0.35.x`** | `amd64`, `i386`, `arm64`                     |\n| `1.0-0.34-\u003ctag\u003e`  | tag: `\u003ctag\u003e` | **`1.0.x`**   | **`0.34.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `0.15-0.34-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.15.x`**  | **`0.34.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.15-0.33-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.15.x`**  | **`0.33.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.15-0.32-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.15.x`**  | **`0.32.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.15-0.31-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.15.x`**  | **`0.31.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.15-0.30-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.15.x`**  | **`0.30.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `0.14-0.34-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.14.x`**  | **`0.34.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.14-0.33-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.14.x`**  | **`0.33.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.14-0.32-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.14.x`**  | **`0.32.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.14-0.31-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.14.x`**  | **`0.31.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.14-0.30-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.14.x`**  | **`0.30.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `0.13-0.34-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.13.x`**  | **`0.34.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.13-0.33-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.13.x`**  | **`0.33.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.13-0.32-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.13.x`**  | **`0.32.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.13-0.31-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.13.x`**  | **`0.31.x`** | `amd64`, `i386`, `arm64`                     |\n| `0.13-0.30-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.13.x`**  | **`0.30.x`** | `amd64`, `i386`, `arm64`                     |\n|                   |              |               |              |                                              |\n| `0.12-0.24-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.12.x`**  | **`0.24.x`** | `amd64`, `i386`                              |\n| `0.12-0.23-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.12.x`**  | **`0.23.x`** | `amd64`, `i386`                              |\n| `0.12-0.22-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.12.x`**  | **`0.22.x`** | `amd64`, `i386`                              |\n| `0.12-0.21-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.12.x`**  | **`0.21.x`** | `amd64`, `i386`                              |\n| `0.12-0.20-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.12.x`**  | **`0.20.x`** | `amd64`, `i386`                              |\n| `0.12-0.19-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.12.x`**  | **`0.19.x`** | `amd64`, `i386`                              |\n|                   |              |               |              |                                              |\n| `0.11-0.18-\u003ctag\u003e` | tag: `\u003ctag\u003e` | **`0.11.x`**  | **`0.18.x`** | `amd64`, `i386`                              |\n\nWhere `\u003ctag\u003e` refers to the chosen git tag from this repository.\n\n\n## :open_file_folder: Docker mounts\n\nThe working directory inside the Docker container is **`/data/`** and should be mounted to your local filesystem where your Terragrant project resides.\n(See [Examples](#examples) for mount location usage.)\n\n\n## :computer: Usage\n\n```bash\ndocker run --rm -v $(pwd):/data cytopia/terragrunt terragrunt \u003cARGS\u003e\ndocker run --rm -v $(pwd):/data cytopia/terragrunt terraform \u003cARGS\u003e\n```\n\n## :capital_abcd: Environment variables\n\nThe following environment variables will ease your life when mounting directories into the docker container by maintaining file system permissions.\n\n| Variables      | Default | Description |\n|----------------|---------|-------------|\n| `RUN_NON_ROOT` | `0`     | Set to `1` to run commands as user instead of root. |\n| `UID`          | `1000`  | Set to the uid of your local user (`id -u`) if you want to run as non root. |\n| `GID`          | `1000`  | Set to the gid of your local user (`id -g`) if you want to run as non root. |\n\n\n## :information_source: Examples\n\n### 1. Simple: Provision single sub-project on AWS\n\n#### 1.1 Project overview\nLet's assume your Terragrunt project setup is as follows:\n```bash\n/my/tf                                              # Terragrunt project root\n├── backend-app\n│   ├── main.tf\n│   └── terragrunt.hcl\n├── frontend-app\n│   ├── main.tf\n│   └── terragrunt.hcl\n├── mysql                                           # MySQL sub-project directory\n│   ├── main.tf\n│   └── terragrunt.hcl\n├── redis\n│   ├── main.tf\n│   └── terragrunt.hcl\n└── vpc\n    ├── main.tf\n    └── terragrunt.hcl\n```\nThe **MySQL** sub-project you want to provision is at the releative path `mysql/`.\n\n#### 1.2 To consider\n1. Mount the terragrunt root project dir (`/my/tf/`) into `/data/` into the container\n2. Use the workding dir (`-w` or `--workdir`) to point to your project inside the container\n3. Add AWS credentials from your environment to the container\n\n#### 1.3 Docker commands\n```bash\n# Initialize the MySQL project\ndocker run --rm \\\n  -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\\n  -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \\\n  -u $(id -u):$(id -g) \\\n  -v /my/tf:/data \\\n  -w /data/mysql \\\n  cytopia/terragrunt terragrunt init\n\n# Plan the MySQL project\ndocker run --rm \\\n  -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\\n  -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \\\n  -u $(id -u):$(id -g) \\\n  -v /my/tf:/data \\\n  -w /data/mysql \\\n  cytopia/terragrunt terragrunt plan\n\n# Apply the MySQL project\ndocker run --rm \\\n  -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\\n  -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \\\n  -u $(id -u):$(id -g) \\\n  -v /my/tf:/data \\\n  -w /data/mysql \\\n  cytopia/terragrunt terragrunt --terragrunt-non-interactive apply\n```\n\u003c!-- #### 1.4 Makefile integration --\u003e\n\n### 2. Complex: Provision single sub-project on AWS\n\n#### 2.1 Project overview\nLet's assume your Terragrunt project setup is as follows:\n```bash\n/my/tf                                              # Terragrunt project root\n└── envs\n    └── aws\n        ├── dev\n        │   ├── eu-central-1\n        │   │   ├── infra\n        │   │   │   └── vpc-k8s                     # VPC sub-project directory\n        │   │   │       ├── terraform.tfvars\n        │   │   │       └── terragrunt.hcl\n        │   │   ├── microservices\n        │   │   │   └── api-gateway\n        │   │   │       ├── terraform.tfvars\n        │   │   │       └── terragrunt.hcl\n        │   │   └── region.tfvars\n        │   ├── global\n        │   │   └── region.tfvars\n        │   └── terragrunt.hcl\n        └── _provider_include\n            └── include_providers.tf\n```\nThe **VPC** sub-project you want to provision is at the relative path `envs/aws/dev/eu-centra-1/infra/vpc-k8s/`.\n\n#### 2.2 To consider\n1. Mount the terragrunt root project dir (`/my/tf/`) into `/data/` into the container\n2. Use the workding dir (`-w` or `--workdir`) to point to your project inside the container\n3. Add AWS credentials from your environment to the container\n\n#### 2.3 Docker commands\n```bash\n# Initialize the VPC project\ndocker run --rm \\\n  -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\\n  -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \\\n  -u $(id -u):$(id -g) \\\n  -v /my/tf:/data \\\n  -w /data/envs/aws/dev/eu-central-1/infra/vpc-k8s \\\n  cytopia/terragrunt terragrunt init\n\n# Plan the VPC project\ndocker run --rm \\\n  -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\\n  -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \\\n  -u $(id -u):$(id -g) \\\n  -v /my/tf:/data \\\n  -w /data/envs/aws/dev/eu-central-1/infra/vpc-k8s \\\n  cytopia/terragrunt terragrunt plan\n\n# Apply the VPC project\ndocker run --rm \\\n  -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \\\n  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\\n  -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \\\n  -u $(id -u):$(id -g) \\\n  -v /my/tf:/data \\\n  -w /data/envs/aws/dev/eu-central-1/infra/vpc-k8s \\\n  cytopia/terragrunt terragrunt --terragrunt-non-interactive apply\n```\n\n\u003c!-- #### 2.4 Makefile integration --\u003e\n\n\n## :arrows_counterclockwise: Related [#awesome-ci](https://github.com/topics/awesome-ci) projects\n\n### Docker images\n\nSave yourself from installing lot's of dependencies and pick a dockerized version of your favourite\nlinter below for reproducible local or remote CI tests:\n\n| GitHub | DockerHub | Type | Description |\n|--------|-----------|------|-------------|\n| [awesome-ci][aci-git-lnk]        | [![aci-hub-img]][aci-hub-lnk]         | Basic      | Tools for git, file and static source code analysis |\n| [file-lint][flint-git-lnk]       | [![flint-hub-img]][flint-hub-lnk]     | Basic      | Baisc source code analysis |\n| [linkcheck][linkcheck-git-lnk]   | [![linkcheck-hub-img]][flint-hub-lnk] | Basic      | Search for URLs in files and validate their HTTP status code |\n| [ansible][ansible-git-lnk]       | [![ansible-hub-img]][ansible-hub-lnk] | Ansible    | Multiple versions and flavours of Ansible |\n| [ansible-lint][alint-git-lnk]    | [![alint-hub-img]][alint-hub-lnk]     | Ansible    | Lint Ansible |\n| [gofmt][gfmt-git-lnk]            | [![gfmt-hub-img]][gfmt-hub-lnk]       | Go         | Format Go source code **\u003csup\u003e[1]\u003c/sup\u003e** |\n| [goimports][gimp-git-lnk]        | [![gimp-hub-img]][gimp-hub-lnk]       | Go         | Format Go source code **\u003csup\u003e[1]\u003c/sup\u003e** |\n| [golint][glint-git-lnk]          | [![glint-hub-img]][glint-hub-lnk]     | Go         | Lint Go code |\n| [eslint][elint-git-lnk]          | [![elint-hub-img]][elint-hub-lnk]     | Javascript | Lint Javascript code |\n| [jsonlint][jlint-git-lnk]        | [![jlint-hub-img]][jlint-hub-lnk]     | JSON       | Lint JSON files **\u003csup\u003e[1]\u003c/sup\u003e** |\n| [kubeval][kubeval-git-lnk]       | [![kubeval-hub-img]][kubeval-hub-lnk] | K8s        | Lint Kubernetes files |\n| [checkmake][cm-git-lnk]          | [![cm-hub-img]][cm-hub-lnk]           | Make       | Lint Makefiles |\n| [phpcbf][pcbf-git-lnk]           | [![pcbf-hub-img]][pcbf-hub-lnk]       | PHP        | PHP Code Beautifier and Fixer |\n| [phpcs][pcs-git-lnk]             | [![pcs-hub-img]][pcs-hub-lnk]         | PHP        | PHP Code Sniffer |\n| [phplint][plint-git-lnk]         | [![plint-hub-img]][plint-hub-lnk]     | PHP        | PHP Code Linter **\u003csup\u003e[1]\u003c/sup\u003e** |\n| [php-cs-fixer][pcsf-git-lnk]     | [![pcsf-hub-img]][pcsf-hub-lnk]       | PHP        | PHP Coding Standards Fixer |\n| [bandit][bandit-git-lnk]         | [![bandit-hub-img]][bandit-hub-lnk]   | Python     | A security linter from PyCQA\n| [black][black-git-lnk]           | [![black-hub-img]][black-hub-lnk]     | Python     | The uncompromising Python code formatter |\n| [mypy][mypy-git-lnk]             | [![mypy-hub-img]][mypy-hub-lnk]       | Python     | Static source code analysis |\n| [pycodestyle][pycs-git-lnk]      | [![pycs-hub-img]][pycs-hub-lnk]       | Python     | Python style guide checker |\n| [pydocstyle][pyds-git-lnk]       | [![pyds-hub-img]][pyds-hub-lnk]       | Python     | Python docstyle checker |\n| [pylint][pylint-git-lnk]         | [![pylint-hub-img]][pylint-hub-lnk]   | Python     | Python source code, bug and quality checker |\n| [terraform-docs][tfdocs-git-lnk] | [![tfdocs-hub-img]][tfdocs-hub-lnk]   | Terraform  | Terraform doc generator (TF 0.12 ready) **\u003csup\u003e[1]\u003c/sup\u003e** |\n| [terragrunt][tg-git-lnk]         | [![tg-hub-img]][tg-hub-lnk]           | Terraform  | Terragrunt and Terraform |\n| [terragrunt-fmt][tgfmt-git-lnk]  | [![tgfmt-hub-img]][tgfmt-hub-lnk]     | Terraform  | `terraform fmt` for Terragrunt files **\u003csup\u003e[1]\u003c/sup\u003e** |\n| [yamlfmt][yfmt-git-lnk]          | [![yfmt-hub-img]][yfmt-hub-lnk]       | Yaml       | Format Yaml files **\u003csup\u003e[1]\u003c/sup\u003e** |\n| [yamllint][ylint-git-lnk]        | [![ylint-hub-img]][ylint-hub-lnk]     | Yaml       | Lint Yaml files |\n\n\u003e **\u003csup\u003e[1]\u003c/sup\u003e** Uses a shell wrapper to add **enhanced functionality** not available by original project.\n\n[aci-git-lnk]: https://github.com/cytopia/awesome-ci\n[aci-hub-img]: https://img.shields.io/docker/pulls/cytopia/awesome-ci.svg\n[aci-hub-lnk]: https://hub.docker.com/r/cytopia/awesome-ci\n\n[flint-git-lnk]: https://github.com/cytopia/docker-file-lint\n[flint-hub-img]: https://img.shields.io/docker/pulls/cytopia/file-lint.svg\n[flint-hub-lnk]: https://hub.docker.com/r/cytopia/file-lint\n\n[linkcheck-git-lnk]: https://github.com/cytopia/docker-linkcheck\n[linkcheck-hub-img]: https://img.shields.io/docker/pulls/cytopia/linkcheck.svg\n[linkcheck-hub-lnk]: https://hub.docker.com/r/cytopia/linkcheck\n\n[jlint-git-lnk]: https://github.com/cytopia/docker-jsonlint\n[jlint-hub-img]: https://img.shields.io/docker/pulls/cytopia/jsonlint.svg\n[jlint-hub-lnk]: https://hub.docker.com/r/cytopia/jsonlint\n\n[ansible-git-lnk]: https://github.com/cytopia/docker-ansible\n[ansible-hub-img]: https://img.shields.io/docker/pulls/cytopia/ansible.svg\n[ansible-hub-lnk]: https://hub.docker.com/r/cytopia/ansible\n\n[alint-git-lnk]: https://github.com/cytopia/docker-ansible-lint\n[alint-hub-img]: https://img.shields.io/docker/pulls/cytopia/ansible-lint.svg\n[alint-hub-lnk]: https://hub.docker.com/r/cytopia/ansible-lint\n\n[kubeval-git-lnk]: https://github.com/cytopia/docker-kubeval\n[kubeval-hub-img]: https://img.shields.io/docker/pulls/cytopia/kubeval.svg\n[kubeval-hub-lnk]: https://hub.docker.com/r/cytopia/kubeval\n\n[gfmt-git-lnk]: https://github.com/cytopia/docker-gofmt\n[gfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/gofmt.svg\n[gfmt-hub-lnk]: https://hub.docker.com/r/cytopia/gofmt\n\n[gimp-git-lnk]: https://github.com/cytopia/docker-goimports\n[gimp-hub-img]: https://img.shields.io/docker/pulls/cytopia/goimports.svg\n[gimp-hub-lnk]: https://hub.docker.com/r/cytopia/goimports\n\n[glint-git-lnk]: https://github.com/cytopia/docker-golint\n[glint-hub-img]: https://img.shields.io/docker/pulls/cytopia/golint.svg\n[glint-hub-lnk]: https://hub.docker.com/r/cytopia/golint\n\n[elint-git-lnk]: https://github.com/cytopia/docker-eslint\n[elint-hub-img]: https://img.shields.io/docker/pulls/cytopia/eslint.svg\n[elint-hub-lnk]: https://hub.docker.com/r/cytopia/eslint\n\n[cm-git-lnk]: https://github.com/cytopia/docker-checkmake\n[cm-hub-img]: https://img.shields.io/docker/pulls/cytopia/checkmake.svg\n[cm-hub-lnk]: https://hub.docker.com/r/cytopia/checkmake\n\n[pcbf-git-lnk]: https://github.com/cytopia/docker-phpcbf\n[pcbf-hub-img]: https://img.shields.io/docker/pulls/cytopia/phpcbf.svg\n[pcbf-hub-lnk]: https://hub.docker.com/r/cytopia/phpcbf\n\n[pcs-git-lnk]: https://github.com/cytopia/docker-phpcs\n[pcs-hub-img]: https://img.shields.io/docker/pulls/cytopia/phpcs.svg\n[pcs-hub-lnk]: https://hub.docker.com/r/cytopia/phpcs\n\n[plint-git-lnk]: https://github.com/cytopia/docker-phplint\n[plint-hub-img]: https://img.shields.io/docker/pulls/cytopia/phplint.svg\n[plint-hub-lnk]: https://hub.docker.com/r/cytopia/phplint\n\n[pcsf-git-lnk]: https://github.com/cytopia/docker-php-cs-fixer\n[pcsf-hub-img]: https://img.shields.io/docker/pulls/cytopia/php-cs-fixer.svg\n[pcsf-hub-lnk]: https://hub.docker.com/r/cytopia/php-cs-fixer\n\n[bandit-git-lnk]: https://github.com/cytopia/docker-bandit\n[bandit-hub-img]: https://img.shields.io/docker/pulls/cytopia/bandit.svg\n[bandit-hub-lnk]: https://hub.docker.com/r/cytopia/bandit\n\n[black-git-lnk]: https://github.com/cytopia/docker-black\n[black-hub-img]: https://img.shields.io/docker/pulls/cytopia/black.svg\n[black-hub-lnk]: https://hub.docker.com/r/cytopia/black\n\n[mypy-git-lnk]: https://github.com/cytopia/docker-mypy\n[mypy-hub-img]: https://img.shields.io/docker/pulls/cytopia/mypy.svg\n[mypy-hub-lnk]: https://hub.docker.com/r/cytopia/mypy\n\n[pycs-git-lnk]: https://github.com/cytopia/docker-pycodestyle\n[pycs-hub-img]: https://img.shields.io/docker/pulls/cytopia/pycodestyle.svg\n[pycs-hub-lnk]: https://hub.docker.com/r/cytopia/pycodestyle\n\n[pyds-git-lnk]: https://github.com/cytopia/docker-pydocstyle\n[pyds-hub-img]: https://img.shields.io/docker/pulls/cytopia/pydocstyle.svg\n[pyds-hub-lnk]: https://hub.docker.com/r/cytopia/pydocstyle\n\n[pylint-git-lnk]: https://github.com/cytopia/docker-pylint\n[pylint-hub-img]: https://img.shields.io/docker/pulls/cytopia/pylint.svg\n[pylint-hub-lnk]: https://hub.docker.com/r/cytopia/pylint\n\n[tfdocs-git-lnk]: https://github.com/cytopia/docker-terraform-docs\n[tfdocs-hub-img]: https://img.shields.io/docker/pulls/cytopia/terraform-docs.svg\n[tfdocs-hub-lnk]: https://hub.docker.com/r/cytopia/terraform-docs\n\n[tg-git-lnk]: https://github.com/cytopia/docker-terragrunt\n[tg-hub-img]: https://img.shields.io/docker/pulls/cytopia/terragrunt.svg\n[tg-hub-lnk]: https://hub.docker.com/r/cytopia/terragrunt\n\n[tgfmt-git-lnk]: https://github.com/cytopia/docker-terragrunt-fmt\n[tgfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/terragrunt-fmt.svg\n[tgfmt-hub-lnk]: https://hub.docker.com/r/cytopia/terragrunt-fmt\n\n[yfmt-git-lnk]: https://github.com/cytopia/docker-yamlfmt\n[yfmt-hub-img]: https://img.shields.io/docker/pulls/cytopia/yamlfmt.svg\n[yfmt-hub-lnk]: https://hub.docker.com/r/cytopia/yamlfmt\n\n[ylint-git-lnk]: https://github.com/cytopia/docker-yamllint\n[ylint-hub-img]: https://img.shields.io/docker/pulls/cytopia/yamllint.svg\n[ylint-hub-lnk]: https://hub.docker.com/r/cytopia/yamllint\n\n\n### Makefiles\n\nVisit **[cytopia/makefiles](https://github.com/cytopia/makefiles)** for dependency-less, seamless project integration and minimum required best-practice code linting for CI.\nThe provided Makefiles will only require GNU Make and Docker itself removing the need to install anything else.\n\n\n## :page_facing_up: License\n\n\n**[MIT License](LICENSE)**\n\nCopyright (c) 2019 [cytopia](https://github.com/cytopia)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcytopia%2Fdocker-terragrunt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcytopia%2Fdocker-terragrunt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcytopia%2Fdocker-terragrunt/lists"}