Skip to content

Commit b672a15

Browse files
committed
secrets
1 parent 1d52407 commit b672a15

5 files changed

Lines changed: 49 additions & 8 deletions

File tree

examples/compose.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@ var DockerodeCompose = require('../lib/compose');
44
var docker = new Dockerode();
55
var compose = new DockerodeCompose(docker);
66

7-
compose.compose('./test/wordpress.yml');
7+
(async () => {
8+
var state = await compose.compose('./test/wordpress.yml', 'wordpress');
9+
console.log(state);
10+
})();

lib/compose.js

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,49 @@
11
const yaml = require('js-yaml');
22
const fs = require('fs');
3+
const { nextTick } = require('process');
34

45
class Compose {
56
constructor(dockerode) {
6-
this.dockerode = dockerode;
7+
this.docker = dockerode;
78
}
89

9-
compose(file) {
10+
async compose(file, projectName) {
11+
var self = this;
12+
var output = {};
13+
if (projectName === undefined) {
14+
throw new Error('please specify a project name');
15+
}
16+
self.projectName = projectName;
1017
try {
11-
const doc = yaml.load(fs.readFileSync(file, 'utf8'));
12-
console.log(doc);
18+
self.recipe = yaml.load(fs.readFileSync(file, 'utf8'));
19+
console.log(self.recipe);
20+
output.secrets = await self.loadSecrets();
21+
return output;
1322
} catch (e) {
14-
console.log(e);
23+
throw e;
24+
}
25+
}
26+
27+
async loadSecrets() {
28+
var secrets = [];
29+
var secretNames = Object.keys(this.recipe.secrets);
30+
for (var secretName of secretNames) {
31+
var secret = this.recipe.secrets[secretName];
32+
if (secret.external === true) continue;
33+
var opts = {
34+
"Name": this.projectName + '_' + secretName,
35+
"Data": fs.readFileSync(secret.file, 'utf8')
36+
};
37+
if (secret.name !== undefined) {
38+
opts.Name = secretName;
39+
}
40+
try {
41+
secrets.push(await this.docker.createSecret(opts));
42+
} catch (err) {
43+
throw err;
44+
}
1545
}
46+
return secrets;
1647
}
1748
}
1849

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "dockerode-compose",
33
"version": "1.0.0",
44
"description": "docker-compose in nodejs using dockerode",
5-
"main": "main.js",
5+
"main": "lib/compose.js",
66
"scripts": {
77
"test": "echo \"Error: no test specified\" && exit 1"
88
},

test/secret.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
xpto

test/wordpress.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ services:
2525
WORDPRESS_DB_PASSWORD: wordpress
2626
WORDPRESS_DB_NAME: wordpress
2727
volumes:
28-
db_data: {}
28+
db_data: {}
29+
secrets:
30+
server-secret:
31+
file: ./test/secret.txt
32+
server-secret-external:
33+
file: ./teste/secret.txt
34+
external: true

0 commit comments

Comments
 (0)