Skip to content

Commit

Permalink
node.js spoonerism service (#15)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dan Miller committed Sep 7, 2018
1 parent 5c38eff commit 7c4d563
Show file tree
Hide file tree
Showing 10 changed files with 96 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Dockerfile.js.base
@@ -0,0 +1,2 @@
FROM node:10

21 changes: 20 additions & 1 deletion Tiltfile
@@ -1,7 +1,7 @@
# -*- mode: Python -*-

def servantes():
return composite_service([fe, vigoda, fortune, doggos, snack, hypothesizer])
return composite_service([fe, vigoda, fortune, doggos, snack, hypothesizer, spoonerisms])

def go_service(name, extra_runs=[]):
yaml = local_file('%s/deployments/%s.yaml' % (name, name))
Expand Down Expand Up @@ -37,6 +37,22 @@ def python_service(name, extra_runs=[]):

return k8s_service(yaml, img)

def javascript_service(name, extra_runs=[]):
yaml = local_file('%s/deployments/%s.yaml' % (name, name))

# right now, Servantes is only intended to work with local docker-for-desktop
# or minikube, so we just make up an image name
image_name = 'windmill.build/servantes/%s' % name

img = build_docker_image('Dockerfile.js.base', image_name, 'node /app/index.js')
repo = local_git_repo('./%s/' % name)
img.add("/app", repo)

for r in extra_runs:
img.run(r)

return k8s_service(yaml, img)

def fe():
return go_service('servantes')

Expand All @@ -55,5 +71,8 @@ def fortune():
def hypothesizer():
return python_service('hypothesizer', ['cd /app && pip install -r requirements.txt'])

def spoonerisms():
return javascript_service('spoonerisms', ['cd /app && yarn install'])

def local_file(p):
return local("cat %s" % p)
1 change: 1 addition & 0 deletions hypothesizer/app.py
Expand Up @@ -5,6 +5,7 @@
benefits = [
"Jurassic park is real",
"You can time travel",
"You can fall asleep whenever you want",
]

drawbacks = [
Expand Down
1 change: 1 addition & 0 deletions servantes/main.go
Expand Up @@ -25,6 +25,7 @@ var Services = []string{
"snack",
"doggos",
"hypothesizer",
"spoonerisms",
}

var ProxyMap = make(map[string]*httputil.ReverseProxy, 0)
Expand Down
1 change: 1 addition & 0 deletions spoonerisms/.dockerignore
@@ -0,0 +1 @@
node_modules
1 change: 1 addition & 0 deletions spoonerisms/.gitignore
@@ -0,0 +1 @@
node_modules
32 changes: 32 additions & 0 deletions spoonerisms/deployments/spoonerisms.yaml
@@ -0,0 +1,32 @@
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: spoonerisms
labels:
app: spoonerisms
spec:
template:
metadata:
labels:
app: spoonerisms
tier: web
spec:
containers:
- name: spoonerisms
image: windmill.build/servantes/spoonerisms
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: spoonerisms
labels:
app: spoonerisms
spec:
ports:
- port: 80
targetPort: 5000
protocol: TCP
selector:
app: spoonerisms
22 changes: 22 additions & 0 deletions spoonerisms/index.js
@@ -0,0 +1,22 @@
'use strict';
const http = require('http');
const immutable = require('immutable');

const spoonerisms = immutable.List([
'Cradley Booper',
'Tame of Groans',
'Jeef Berky',
'Rot Poast',
'Dive Follar Lootfong, from WubSay!',
'Bustin Jieber',
'Jilly Boel',
'Boot rear',
])

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
let item = spoonerisms.get(Math.floor(Math.random()*spoonerisms.size))
res.end(item);
}).listen(5000, "0.0.0.0");

console.log('Server running at http://127.0.0.1:5000/');
9 changes: 9 additions & 0 deletions spoonerisms/package.json
@@ -0,0 +1,9 @@
{
"name": "spoonerisms",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"immutable": "^3.8.2"
}
}
7 changes: 7 additions & 0 deletions spoonerisms/yarn.lock
@@ -0,0 +1,7 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


immutable@^3.8.2:
version "3.8.2"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"

0 comments on commit 7c4d563

Please sign in to comment.