diff --git a/ts/docker.classes.service.ts b/ts/docker.classes.service.ts index ca0cc2f..f526535 100644 --- a/ts/docker.classes.service.ts +++ b/ts/docker.classes.service.ts @@ -97,11 +97,12 @@ export class DockerService { }); } + // lets configure secrets const secretArray: any[] = []; for (const secret of serviceCreationDescriptor.secrets) { secretArray.push({ File: { - Name: 'secret.json', + Name: 'secret.json', // TODO: make sure that works with multiple secrets UID: '33', GID: '33', Mode: 384 @@ -111,6 +112,15 @@ export class DockerService { }); } + // lets configure limits + const limits = { + MemoryBytes: 1000 * 1000000 + }; + + if (serviceCreationDescriptor.resources) { + limits.MemoryBytes = serviceCreationDescriptor.resources.memorySizeMB * 1000000; + } + const response = await dockerHost.request('POST', '/services/create', { Name: serviceCreationDescriptor.name, TaskTemplate: { @@ -127,7 +137,10 @@ export class DockerService { Monitor: 15000000000, MaxFailureRatio: 0.15 }, - ForceUpdate: 1 + ForceUpdate: 1, + Resources: { + Limits: limits + } }, Labels: labels, Networks: networkArray, diff --git a/ts/interfaces/service.ts b/ts/interfaces/service.ts index f7ecbfd..116a8a5 100644 --- a/ts/interfaces/service.ts +++ b/ts/interfaces/service.ts @@ -12,4 +12,7 @@ export interface IServiceCreationDescriptor { secrets: DockerSecret[]; ports: string[]; accessHostDockerSock?: boolean; + resources?: { + memorySizeMB: number + }; }