Skip to content

Commit

Permalink
added docker files
Browse files Browse the repository at this point in the history
  • Loading branch information
al66 committed Jun 9, 2018
1 parent 2db4edd commit 3a511ab
Show file tree
Hide file tree
Showing 9 changed files with 295 additions and 8 deletions.
101 changes: 101 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,4 +119,105 @@ Parameters can be mapped by a valid path for the _payload_ of the event or the _
- otherwise it is emitted with the given value
Payload can be mapped by a valid path for the _result_ of the called action or the _meta_ data of the event.

# Docker
You can use the docker files in folder docker as a basis.
Copy the files to your docker folder.
The files have to be adopted to meet your environment as described beow.
Then start the daemon with `docker-compose up -d`.
## docker-compose.yml
adopt the names of the externals_links (nats and kafka_kafka_1) and the names of the networks (redis_default, nats_default and kafka_default) to your docker settings.
You can fetch the names via command `docker container ls` and `docker network ls`
```
version: '2'
services:
publisher:
build:
context: .
image: flow-publisher
# env_file: docker-compose.env
environment:
SERVICES: publisher
external_links:
# depends on the names of your running docker services for nats and kafka
- nats
- kafka_kafka_1
# depends on the names of the networks of your running docker services
networks:
- default
- redis_default
- nats_default
- kafka_default
# for multible subscriber with different subscriptions add a sequence number per subscriber service
subscriber-1:
build:
context: .
image: flow-subscriber-1
# env_file: docker-compose.env
environment:
SERVICES: subscriber-1
external_links:
# depends on the names of your running docker services for nats and kafka
- nats
- kafka_kafka_1
networks:
- default
# depends on the names of the networks of your running docker services
- redis_default
- nats_default
- kafka_default
networks:
redis_default:
external: true
nats_default:
external: true
kafka_default:
external: true
```
## moleculer.config.js
adopt the hostname (nats) according to your containername:
```
transporter: "nats://nats:4222",
```
if you want to use the cache also, the hostname must be adopted to:
```
/*
cacher: {
type: "Redis",
options: {
redis: {
host: "192.168.2.124",
db: 1
}
}
},
*/
```
## publisher.service.js
adopt the hostname (kafka) according to your containername.
```
brokers: ["kafka_kafka_1:9092"]
```
## subscriber-1.service.js
adopt the hostname (kafka) according to your containername:
```
brokers: ["kafka_kafka_1:9092"]
```
add your own subscriptions instead of the examples:
```
subscriptions: [
{
id: "registration" , // consumer group
//fromBeginning: 'earliest', // if already events exists and consumer group should handle
// them starting with the first existing
event: "user.created", // event listening for
action: "registration.requestConfirmation" // action to be called
}
]
```



48 changes: 48 additions & 0 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
version: '2'
services:

publisher:
build:
context: .
image: flow-publisher
# env_file: docker-compose.env
environment:
SERVICES: publisher
external_links:
# depends on the names of your running docker services for nats and kafka
- nats
- kafka_kafka_1
# depends on the names of the networks of your running docker services
networks:
- default
- redis_default
- nats_default
- kafka_default

# for multiple subscriber with different subscriptions add a sequence number per subscriber service
subscriber-1:
build:
context: .
image: flow-subscriber-1
# env_file: docker-compose.env
environment:
SERVICES: subscriber-1
external_links:
# depends on the names of your running docker services for nats and kafka
- nats
- kafka_kafka_1
networks:
- default
# depends on the names of the networks of your running docker services
- redis_default
- nats_default
- kafka_default

networks:
redis_default:
external: true
nats_default:
external: true
kafka_default:
external: true

56 changes: 56 additions & 0 deletions docker/moleculer.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
"use strict";

module.exports = {
// namespace: "",
// nodeID: "",

logger: true,
logLevel: "info",
logFormatter: "default",

transporter: "nats://nats:4222",

/*
cacher: {
type: "Redis",
options: {
redis: {
host: "192.168.2.124",
db: 1
}
}
},
*/

serializer: null,

requestTimeout: 0 * 1000,
requestRetry: 0,
maxCallLevel: 0,
heartbeatInterval: 5,
heartbeatTimeout: 15,

disableBalancer: false,

registry: {
strategy: "RoundRobin",
preferLocal: true
},

circuitBreaker: {
enabled: false,
maxFailures: 3,
halfOpenTime: 10 * 1000,
failureOnTimeout: true,
failureOnReject: true
},

validation: true,
validator: null,
metrics: false,
metricsRate: 1,
statistics: false,
internalActions: true,

hotReload: false
};
18 changes: 18 additions & 0 deletions docker/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "imicros-flow",
"version": "1.0.0",
"description": "Docker build",
"scripts": {
"start": "moleculer-runner services"
},
"author": "Andreas.Leinen@imicros.de",
"dependencies": {
"ioredis": "^3.1.0",
"nats": "^0.8.10",
"moleculer": "0.12.6",
"imicros-flow": "^0.0.4"
},
"engines": {
"node": ">= 8.x.x"
}
}
21 changes: 21 additions & 0 deletions docker/services/publisher.service.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"use strict";

const { Publisher } = require("imicros-flow");

module.exports = {
name: "flow.publisher",
mixins: [Publisher],

/**
* Service settings
*/
settings: {
brokers: ["kafka_kafka_1:9092"]
},

/**
* Service metadata
*/
metadata: {},

};
35 changes: 35 additions & 0 deletions docker/services/subscriber-1.service.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
"use strict";

const { StaticSubscriber } = require("imicros-flow");

module.exports = {
name: "flow.subscriber.1",
mixins: [StaticSubscriber],

/**
* Service settings
*/
settings: {
brokers: ["kafka_kafka_1:9092"],
subscriptions: [
{
id: "registration" , // consumer group
//fromBeginning: 'earliest', // if already events exists and consumer group should handle
// them starting with the first existing
event: "user.created", // event listening for
action: "registration.requestConfirmation" // action to be called
}
]
},

/**
* Service metadata
*/
metadata: {},

/**
* Service dependencies
*/
dependencies: ["flow.publisher"],

};
12 changes: 10 additions & 2 deletions examples/simple.publisher.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,22 @@ const { Publisher } = require("../index");

let broker = new ServiceBroker({ logger: console, logLevel: "debug" });

broker.createService(Publisher, Object.assign({ settings: { brokers: ["192.168.2.124:9092"] } }));
const Service = {
name: "flow.publisher",
mixins: [Publisher],
settings: {
brokers: ["192.168.2.124:9092"]
}
};

broker.createService(Service);

let run = async () => {
await broker.start();
await broker.call("flow.publisher.emit", {
event: "my.first.event",
payload: { msg: "somthing useful" }
});
}).then(res => console.log(res));
await broker.stop();
};
run();
10 changes: 5 additions & 5 deletions lib/flow.publisher.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,10 @@ module.exports = {
let kafkaLogging = require("kafka-node/logging");
this.serviceLogger = () => {
return {
debug: this.logger,
info: this.logger,
warn: this.logger,
error: this.logger
debug: this.logger.debug.bind(this.logger),
info: this.logger.info.bind(this.logger),
warn: this.logger.warn.bind(this.logger),
error: this.logger.error.bind(this.logger)
};
};
kafkaLogging.setLoggerProvider(this.serviceLogger);
Expand Down Expand Up @@ -179,7 +179,7 @@ module.exports = {
});
this.producer.on("ready", async () => {
this.connected = true;
this.logger.info("Producer connected");
this.logger.info("Producer connected", { brokers: this.brokers.join(",") });
resolve();
});
});
Expand Down
2 changes: 1 addition & 1 deletion lib/flow.static.subscriber.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ module.exports = {
/**
* Service dependencies
*/
dependencies: ["flow.publisher"],
//dependencies: [],

/**
* Actions
Expand Down

0 comments on commit 3a511ab

Please sign in to comment.