Skip to content

Jobs

Minimal Job

The below job deploys a Docker image

docs.nomad
job "docs" {
    datacenters = ["dc1"]

    group "docs" {
        task "docs" {
            driver = "docker"
            config {
                image = "my-docker-image:latest"
            }
        }
    }
}

Networking

Ports

networking.nomad
job "networking" {
    datacenters = ["dc1"]

    group "networking" {
        network {
            port "ui" {
                # Map to port 8000 on the host
                static = 8000
                # Port on the container
                to = 80
            }
        }

        task "networking" {
            driver = "docker"
            config {
                image = "my-docker-image:latest"
                ports = ["ui"]
            }
        }
    }
}

Configuration

Application arguments

variables.nomad
job "variables" {
    datacenters = ["dc1"]

    group "variables" {
        task "variables" {
            driver = "docker"
            config {
                image = "my-docker-image:latest"

                args = [
                    "-listen",
                    "4000"
                ]
            }
        }
    }
}

Environment Variables

variables.nomad
job "variables" {
    datacenters = ["dc1"]

    group "variables" {
        task "variables" {
            driver = "docker"
            config {
                image = "my-docker-image:latest"
            }

            env {
                DB_USER = "test"
            }
        }
    }
}

Loading environment variables from .env file

.env
MY_VARIABLE=test
variables.nomad
job "variables" {
    datacenters = ["dc1"]

    group "variables" {
        task "variables" {
            driver = "docker"
            config {
                image = "my-docker-image:latest"
            }

            template {
                data = file("./.env")
                destination = "secrets/file.env"
                env = true
            }
        }
    }
}

External configuration files

variables.nomad
job "variables" {
    datacenters = ["dc1"]

    group "variables" {
        task "variables" {
            driver = "docker"
            config {
                image = "my-docker-image:latest"

                volumes = [
                    "local/config.yaml:/etc/my-app/config.yaml"
                ]
            }

            template {
                data = file("./config.yaml")
                destination = "local/config.yaml"
            }

        }
    }
}

Last update: April 30, 2023
Created: April 30, 2023