https://github.com/theohbrothers/docker-terraform
Dockerized terraform with useful tools 🐳
https://github.com/theohbrothers/docker-terraform
buildx docker generate-dockerimagevariants sops ssh terraform
Last synced: 3 months ago
JSON representation
Dockerized terraform with useful tools 🐳
- Host: GitHub
- URL: https://github.com/theohbrothers/docker-terraform
- Owner: theohbrothers
- License: apache-2.0
- Created: 2021-09-15T12:27:03.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2026-04-21T00:17:32.000Z (3 months ago)
- Last Synced: 2026-04-21T02:28:32.804Z (3 months ago)
- Topics: buildx, docker, generate-dockerimagevariants, sops, ssh, terraform
- Language: Dockerfile
- Homepage:
- Size: 408 KB
- Stars: 0
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# docker-terraform
[](https://github.com/theohbrothers/docker-terraform/actions/workflows/ci-master-pr.yml)
[](https://github.com/theohbrothers/docker-terraform/releases/)
[](https://hub.docker.com/r/theohbrothers/docker-terraform)
Dockerized [terraform](https://github.com/hashicorp/terraform) with useful tools.
The base image is `alpine`. The image is not the closed-source [`hashicorp/terraform` image on DockerHub](https://hub.docker.com/r/hashicorp/terraform), see [here](https://github.com/hashicorp/terraform/blob/v1.0.0/Dockerfile).
## Tags
| Tag | Dockerfile Build Context |
|:-------:|:---------:|
| `:1.15.1`, `:latest` | [View](variants/1.15.1) |
| `:1.15.1-jq-sops-ssh-step` | [View](variants/1.15.1-jq-sops-ssh-step) |
| `:1.15.1-jq-libvirt-sops-ssh-step` | [View](variants/1.15.1-jq-libvirt-sops-ssh-step) |
| `:1.14.9` | [View](variants/1.14.9) |
| `:1.14.9-jq-sops-ssh-step` | [View](variants/1.14.9-jq-sops-ssh-step) |
| `:1.14.9-jq-libvirt-sops-ssh-step` | [View](variants/1.14.9-jq-libvirt-sops-ssh-step) |
| `:1.13.5` | [View](variants/1.13.5) |
| `:1.13.5-jq-sops-ssh-step` | [View](variants/1.13.5-jq-sops-ssh-step) |
| `:1.13.5-jq-libvirt-sops-ssh-step` | [View](variants/1.13.5-jq-libvirt-sops-ssh-step) |
| `:1.12.2` | [View](variants/1.12.2) |
| `:1.12.2-jq-sops-ssh-step` | [View](variants/1.12.2-jq-sops-ssh-step) |
| `:1.12.2-jq-libvirt-sops-ssh-step` | [View](variants/1.12.2-jq-libvirt-sops-ssh-step) |
| `:1.11.4` | [View](variants/1.11.4) |
| `:1.11.4-jq-sops-ssh-step` | [View](variants/1.11.4-jq-sops-ssh-step) |
| `:1.11.4-jq-libvirt-sops-ssh-step` | [View](variants/1.11.4-jq-libvirt-sops-ssh-step) |
| `:1.10.5` | [View](variants/1.10.5) |
| `:1.10.5-jq-sops-ssh-step` | [View](variants/1.10.5-jq-sops-ssh-step) |
| `:1.10.5-jq-libvirt-sops-ssh-step` | [View](variants/1.10.5-jq-libvirt-sops-ssh-step) |
| `:1.9.8` | [View](variants/1.9.8) |
| `:1.9.8-jq-sops-ssh-step` | [View](variants/1.9.8-jq-sops-ssh-step) |
| `:1.9.8-jq-libvirt-sops-ssh-step` | [View](variants/1.9.8-jq-libvirt-sops-ssh-step) |
| `:1.8.5` | [View](variants/1.8.5) |
| `:1.8.5-jq-sops-ssh-step` | [View](variants/1.8.5-jq-sops-ssh-step) |
| `:1.8.5-jq-libvirt-sops-ssh-step` | [View](variants/1.8.5-jq-libvirt-sops-ssh-step) |
| `:1.7.5` | [View](variants/1.7.5) |
| `:1.7.5-jq-sops-ssh-step` | [View](variants/1.7.5-jq-sops-ssh-step) |
| `:1.7.5-jq-libvirt-sops-ssh-step` | [View](variants/1.7.5-jq-libvirt-sops-ssh-step) |
| `:1.6.6` | [View](variants/1.6.6) |
| `:1.6.6-jq-sops-ssh-step` | [View](variants/1.6.6-jq-sops-ssh-step) |
| `:1.6.6-jq-libvirt-sops-ssh-step` | [View](variants/1.6.6-jq-libvirt-sops-ssh-step) |
| `:1.5.7` | [View](variants/1.5.7) |
| `:1.5.7-jq-sops-ssh-step` | [View](variants/1.5.7-jq-sops-ssh-step) |
| `:1.5.7-jq-libvirt-sops-ssh-step` | [View](variants/1.5.7-jq-libvirt-sops-ssh-step) |
| `:1.4.7` | [View](variants/1.4.7) |
| `:1.4.7-jq-sops-ssh-step` | [View](variants/1.4.7-jq-sops-ssh-step) |
| `:1.4.7-jq-libvirt-sops-ssh-step` | [View](variants/1.4.7-jq-libvirt-sops-ssh-step) |
| `:1.3.10` | [View](variants/1.3.10) |
| `:1.3.10-jq-sops-ssh-step` | [View](variants/1.3.10-jq-sops-ssh-step) |
| `:1.3.10-jq-libvirt-sops-ssh-step` | [View](variants/1.3.10-jq-libvirt-sops-ssh-step) |
| `:1.2.9` | [View](variants/1.2.9) |
| `:1.2.9-jq-sops-ssh-step` | [View](variants/1.2.9-jq-sops-ssh-step) |
| `:1.2.9-jq-libvirt-sops-ssh-step` | [View](variants/1.2.9-jq-libvirt-sops-ssh-step) |
| `:1.1.9` | [View](variants/1.1.9) |
| `:1.1.9-jq-sops-ssh-step` | [View](variants/1.1.9-jq-sops-ssh-step) |
| `:1.1.9-jq-libvirt-sops-ssh-step` | [View](variants/1.1.9-jq-libvirt-sops-ssh-step) |
| `:1.0.11` | [View](variants/1.0.11) |
| `:1.0.11-jq-sops-ssh-step` | [View](variants/1.0.11-jq-sops-ssh-step) |
| `:1.0.11-jq-libvirt-sops-ssh-step` | [View](variants/1.0.11-jq-libvirt-sops-ssh-step) |
| `:0.15.5` | [View](variants/0.15.5) |
| `:0.15.5-jq-sops-ssh-step` | [View](variants/0.15.5-jq-sops-ssh-step) |
| `:0.15.5-jq-libvirt-sops-ssh-step` | [View](variants/0.15.5-jq-libvirt-sops-ssh-step) |
| `:0.14.11` | [View](variants/0.14.11) |
| `:0.14.11-jq-sops-ssh-step` | [View](variants/0.14.11-jq-sops-ssh-step) |
| `:0.14.11-jq-libvirt-sops-ssh-step` | [View](variants/0.14.11-jq-libvirt-sops-ssh-step) |
| `:0.13.7` | [View](variants/0.13.7) |
| `:0.13.7-jq-sops-ssh-step` | [View](variants/0.13.7-jq-sops-ssh-step) |
| `:0.13.7-jq-libvirt-sops-ssh-step` | [View](variants/0.13.7-jq-libvirt-sops-ssh-step) |
| `:0.12.31` | [View](variants/0.12.31) |
| `:0.12.31-jq-sops-ssh-step` | [View](variants/0.12.31-jq-sops-ssh-step) |
| `:0.12.31-jq-libvirt-sops-ssh-step` | [View](variants/0.12.31-jq-libvirt-sops-ssh-step) |
| `:0.11.15` | [View](variants/0.11.15) |
| `:0.11.15-jq-sops-ssh-step` | [View](variants/0.11.15-jq-sops-ssh-step) |
| `:0.11.15-jq-libvirt-sops-ssh-step` | [View](variants/0.11.15-jq-libvirt-sops-ssh-step) |
| `:0.10.8` | [View](variants/0.10.8) |
| `:0.10.8-jq-sops-ssh-step` | [View](variants/0.10.8-jq-sops-ssh-step) |
| `:0.10.8-jq-libvirt-sops-ssh-step` | [View](variants/0.10.8-jq-libvirt-sops-ssh-step) |
| `:0.9.11` | [View](variants/0.9.11) |
| `:0.9.11-jq-sops-ssh-step` | [View](variants/0.9.11-jq-sops-ssh-step) |
| `:0.9.11-jq-libvirt-sops-ssh-step` | [View](variants/0.9.11-jq-libvirt-sops-ssh-step) |
| `:0.8.8` | [View](variants/0.8.8) |
| `:0.8.8-jq-sops-ssh-step` | [View](variants/0.8.8-jq-sops-ssh-step) |
| `:0.8.8-jq-libvirt-sops-ssh-step` | [View](variants/0.8.8-jq-libvirt-sops-ssh-step) |
## Development
Requires Windows `powershell` or [`pwsh`](https://github.com/PowerShell/PowerShell).
```powershell
# Install Generate-DockerImageVariants module: https://github.com/theohbrothers/Generate-DockerImageVariants
Install-Module -Name Generate-DockerImageVariants -Repository PSGallery -Scope CurrentUser -Force -Verbose
# Edit ./generate templates
# Generate the variants
Generate-DockerImageVariants .
```
### Variant versions
[versions.json](generate/definitions/versions.json) contains a list of [Semver](https://semver.org/) versions, one per line.
To update versions in `versions.json`:
```powershell
./Update-Versions.ps1
```
To update versions in `versions.json`, and open a PR for each changed version, and merge successful PRs one after another (to prevent merge conflicts), and finally create a tagged release and close milestone:
```powershell
$env:GITHUB_TOKEN = 'xxx'
./Update-Versions.ps1 -PR -AutoMergeQueue -AutoRelease
```
To perform a dry run, use `-WhatIf`.