Finally found someone who uses OpenTofu for Docker too. I saw many opinions and thinking that dropping Compose for OpenTofu/Terraform is silly, because Compose is "more native". I use OpenTofu for Docker too, but I structured code in other way, I have a module that mimics compose in some way, but is simpler for me to use. I published module here: https://codeberg.org/cichy1173/cichyform
I do not published my IaC, but I can show how code looks like for service:
module "adguard" {
source = "git::ssh://git@codeberg.org/cichy1173/mylab-opentofu.git//modules/docker_service?ref=docker_service-v1.1"
service_name = "adguardhome"
image_name = "adguard/adguardhome:latest"
volumes = [
{
host_path = "/home/cichy/docker/adguard/adguard/conf"
container_path = "/opt/adguardhome/conf"
},
{
host_path = "/home/cichy/docker/adguard/adguard/work"
container_path = "/opt/adguardhome/work"
}
]
ports = [
{
internal = 53
external = 53
protocol = "udp"
},
{
internal = 80
external = 80
},
{
internal = 443
external = 443
},
{
internal = 853
external = 853
},
{
internal = 3000
external = 3000
}
]
environment_variables = []
}
I also created an Forgejo Action to run plan on stacks with this module to check if there is a new image under the tag :latest
. Oh, and also I manage Adguard Home using OpenTofu, it is very powerful: https://codeberg.org/cichy1173/adguard-home-cm-repository