Skip to content

Instantly share code, notes, and snippets.

@sbc64
Forked from shanewholloway/docker-stackfile.yml
Created May 20, 2021 12:29
Show Gist options
  • Save sbc64/f1a2106200e78afd19e1e05bc68bb425 to your computer and use it in GitHub Desktop.
Save sbc64/f1a2106200e78afd19e1e05bc68bb425 to your computer and use it in GitHub Desktop.
Example Docker Stack Deploy with Node/Service/Task values
version: "3.1"
networks:
public:
example_net:
internal: true
driver_opts:
encrypted: ""
ipam:
config:
- subnet: 172.16.4.0/24
services:
playground:
image: node
hostname: "{{.Service.Name}}-{{.Task.Slot}}-{{.Node.ID}}"
environment:
SWARM_PEERS: "tasks.{{.Service.Name}}"
SWARM_TASK_SLOT: "{{.Task.Slot}}"
SWARM_SERVICE_TASK: |
{ "node": "{{.Node.ID}}"
, "service": { "id":"{{.Service.ID}}", "name": "{{.Service.Name}}", "dns_peers": "tasks.{{.Service.Name}}", "labels": "{{js .Service.Labels}}" }
, "task": { "id": "{{.Task.ID}}", "name": "{{.Task.Name}}", "slot": {{.Task.Slot}} } }
command: ['node', '-e', 'require("http").createServer((req,res) => {res.end([[req.method, req.httpVersion, req.url], ["On host:", require("os").hostname()], ["SWARM_SERVICE_TASK:", process.env.SWARM_SERVICE_TASK], []].map(l=>l.join(" ")).join("\n"))}).listen(3001, "0.0.0.0", ()=> {})']
networks:
- example_net
- public
ports: ["3001:3001"]
deploy:
replicas: 3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment