Creates a generic docker-container module

This commit is contained in:
Nemo 2018-07-28 20:03:43 +05:30
parent 1f545f3117
commit 3322870a53
8 changed files with 105 additions and 47 deletions

View File

@ -90,13 +90,6 @@ module "monicahq" {
postgres-network-id = "${module.db.postgres-network-id}"
}
module "requestbin" {
source = "requestbin"
domain = "requestbin.bb8.fun"
traefik-labels = "${var.traefik-common-labels}"
traefik-network-id = "${module.docker.traefik-network-id}"
}
module "resilio" {
source = "resilio"
domain = "sync.bb8.fun"

23
modules/container/main.tf Normal file
View File

@ -0,0 +1,23 @@
data "docker_registry_image" "image" {
name = "${var.image}"
}
resource "docker_image" "image" {
name = "${data.docker_registry_image.image.name}"
pull_triggers = ["${data.docker_registry_image.image.sha256_digest}"]
}
resource "docker_container" "container" {
name = "${var.name}"
image = "${docker_image.image.latest}"
ports = "${var.ports}"
restart = "${var.restart}"
env = "${var.env}"
command = "${var.command}"
entrypoint = "${var.entrypoint}"
user = "${var.user}"
networks = ["${var.networks}"]
labels = "${var.labels}"
destroy_grace_seconds = "${var.destroy_grace_seconds}"
must_run = "${var.must_run}"
}

61
modules/container/vars.tf Normal file
View File

@ -0,0 +1,61 @@
variable "image" {
description = "docker image (with tag)"
}
variable "name" {
description = "docker container name"
}
variable "ports" {
description = "list of port mappings"
type = "list"
default = []
}
variable "networks" {
description = "list of networks"
type = "list"
default = []
}
variable "restart" {
description = "restart-policy"
default = "unless-stopped"
}
variable "must_run" {
description = "If true, then the Docker container will be kept running. "
default = "true"
type = "string"
}
variable "user" {
description = "user"
default = ""
}
variable "destroy_grace_seconds" {
description = "Container will be destroyed after n seconds or on successful stop."
default = 10
type = "string"
}
variable "command" {
description = "command"
default = []
}
variable "entrypoint" {
description = "entrypoint"
default = []
}
variable "env" {
description = "environment variables"
default = []
}
variable "labels" {
description = "labels"
default = {}
}

16
requestbin.tf Normal file
View File

@ -0,0 +1,16 @@
module "requestbin" {
name = "requestbin"
source = "./modules/container"
image = "jankysolutions/requestbin:latest"
labels = "${merge(
var.traefik-common-labels, map(
"traefik.port", 8000,
"traefik.frontend.rule","Host:requestbin.${var.root-domain}"
))}"
networks = "${list(module.docker.traefik-network-id)}"
destroy_grace_seconds = 10
must_run = true
}

View File

@ -1,6 +0,0 @@
# requestbin
- runscope has stopped hosting their public version of Requestb.in
- https://github.com/Runscope/requestbin#readme
There is no official image: https://github.com/Runscope/requestbin/issues/51 so using an unofficial image at https://hub.docker.com/r/jankysolutions/requestbin

View File

@ -1,25 +0,0 @@
data "docker_registry_image" "requestbin" {
name = "jankysolutions/requestbin:latest"
}
resource "docker_image" "requestbin" {
name = "${data.docker_registry_image.requestbin.name}"
pull_triggers = ["${data.docker_registry_image.requestbin.sha256_digest}"]
}
resource "docker_container" "requestbin" {
name = "requestbin"
image = "${docker_image.requestbin.latest}"
labels = "${merge(
var.traefik-labels, map(
"traefik.port", 8000,
"traefik.frontend.rule","Host:${var.domain}"
))}"
networks = ["${var.traefik-network-id}"]
restart = "unless-stopped"
destroy_grace_seconds = 10
must_run = true
}

View File

@ -1,9 +0,0 @@
variable "domain" {
type = "string"
}
variable "traefik-labels" {
type = "map"
}
variable "traefik-network-id" {}

View File

@ -77,3 +77,8 @@ variable "monica-db-password" {}
variable "monica-app-key" {}
variable "monica-hash-salt" {}
variable "monica-smtp-password" {}
variable "root-domain" {
description = "root domain for most applications"
default = "bb8.fun"
}