1 | const Container = require('./container')
|
2 | const tarfs = require('tar-fs')
|
3 | const async = require('async')
|
4 | const path = require('path')
|
5 | const Docker = require('dockerode')
|
6 | const chalk = require('chalk')
|
7 |
|
8 | const docker = new Docker({
|
9 | socketPath: '/var/run/docker.sock'
|
10 | })
|
11 |
|
12 | class RouterContainer extends Container {
|
13 | constructor (devServer) {
|
14 | super(devServer, 'localapp', 'router')
|
15 | }
|
16 |
|
17 | getImage() {
|
18 | return 'noop/router'
|
19 | }
|
20 |
|
21 | getEnv() {
|
22 | return {
|
23 | ROUTES: JSON.stringify(this.devServer.app.routes.map((route) => {
|
24 | return {
|
25 | method: route.method,
|
26 | pattern: route.pattern,
|
27 | componentName: route.component.name,
|
28 | hostname: `noop-${route.component.app.id}-component-${route.component.name}`,
|
29 | port: route.component.port
|
30 | }
|
31 | }))
|
32 | }
|
33 | }
|
34 |
|
35 | build (done) {
|
36 | const pack = tarfs.pack(path.join(__dirname, '/../router'))
|
37 | docker.buildImage(pack, {t: 'noop/router'}, (err, output) => {
|
38 | if (err) return done(err)
|
39 | docker.modem.followProgress(output, done)
|
40 | })
|
41 | }
|
42 | }
|
43 |
|
44 | module.exports = RouterContainer
|