Skip to content

Commit 57cd282

Browse files
committed
chore(Docker): Add scripts for starting ElasticSearch via Docker container
1 parent 587046d commit 57cd282

File tree

6 files changed

+78
-2
lines changed

6 files changed

+78
-2
lines changed

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"version": "0.0.0-semantically-released",
44
"description": "Elastic search via GraphQL",
55
"files": [
6-
"es",
76
"lib"
87
],
98
"main": "lib/index.js",
@@ -78,6 +77,9 @@
7877
"test": "jest",
7978
"test:watch": "jest --watch",
8079
"watch": "npm run test:watch",
81-
"semantic-release": "semantic-release pre && npm publish && semantic-release post"
80+
"semantic-release": "semantic-release pre && npm publish && semantic-release post",
81+
"docker": "npm run docker:v5",
82+
"docker:v2": "node ./scripts/docker/start 2 & wait",
83+
"docker:v5": "node ./scripts/docker/start 5 & wait"
8284
}
8385
}

scripts/docker/es2/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from elasticsearch:2-alpine
2+
3+
copy elasticsearch.yml /usr/share/elasticsearch/config/elasticsearch.yml

scripts/docker/es2/elasticsearch.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
script.inline: true
2+
script.indexed: true
3+
network.host: 0.0.0.0
4+
http.cors.enabled: true
5+
http.cors.allow-origin: "*"
6+
cluster.name: elasticsearch_nodkz

scripts/docker/es5/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from elasticsearch:5-alpine
2+
3+
copy elasticsearch.yml /usr/share/elasticsearch/config/elasticsearch.yml

scripts/docker/es5/elasticsearch.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
script.inline: true
2+
network.host: 0.0.0.0
3+
http.cors.enabled: true
4+
http.cors.allow-origin: "*"
5+
cluster.name: elasticsearch_nodkz

scripts/docker/start.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/* eslint-disable no-console */
2+
3+
const cp = require('child_process');
4+
const path = require('path');
5+
6+
const dockerImageName = 'elasticsearch-nodkz';
7+
const version = process.argv[2] || 5;
8+
9+
function isDockerImageExists(imageNameWithTag) {
10+
const imageId = cp
11+
.execSync(`docker images -q ${imageNameWithTag}`, { cwd: '.' })
12+
.toString();
13+
return imageId && imageId.length > 0;
14+
}
15+
16+
function buildDockerContainer(v) {
17+
const imageNameWithTag = `${dockerImageName}:${v}`;
18+
const dockerContextFolder = path.resolve(__dirname, `./es${v}`);
19+
console.log(
20+
`Building docker container ${imageNameWithTag} from ${dockerContextFolder}/Dockerfile ...`
21+
);
22+
cp.execSync(
23+
`docker build \
24+
-t ${imageNameWithTag} \
25+
${dockerContextFolder}`,
26+
{
27+
cwd: dockerContextFolder,
28+
stdio: [0, 1, 2],
29+
}
30+
);
31+
}
32+
33+
function runDockerContainer(v) {
34+
const imageNameWithTag = `${dockerImageName}:${v}`;
35+
if (!isDockerImageExists(imageNameWithTag)) {
36+
buildDockerContainer(v);
37+
}
38+
39+
console.log(`Starting docker container ${imageNameWithTag} ...`);
40+
cp.execSync(`docker run -i --rm -p 9200:9200 ${imageNameWithTag}`, {
41+
stdio: [0, 1, 2],
42+
});
43+
}
44+
45+
function removeDockerContainer(v) {
46+
const imageNameWithTag = `${dockerImageName}:${v}`;
47+
console.log(`Removing docker image ${imageNameWithTag} ...`);
48+
cp.execSync(`docker rmi ${imageNameWithTag}`, { stdio: [0, 1, 2] });
49+
}
50+
51+
function onExit() {
52+
removeDockerContainer(version);
53+
process.exit(0);
54+
}
55+
process.on('SIGINT', onExit); // catch ctrl-c
56+
process.on('SIGTERM', onExit); // catch kill
57+
runDockerContainer(version);

0 commit comments

Comments
 (0)