Compare commits

..

4 Commits

Author SHA1 Message Date
ea5e552192 1.0.61 2019-09-13 17:54:18 +02:00
1afe5c6e16 fix(core): update 2019-09-13 17:54:17 +02:00
eb0dc96dbd 1.0.60 2019-09-13 16:57:22 +02:00
55f45b1c3a fix(core): update 2019-09-13 16:57:21 +02:00
7 changed files with 34 additions and 15 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "@mojoio/docker", "name": "@mojoio/docker",
"version": "1.0.59", "version": "1.0.61",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "@mojoio/docker", "name": "@mojoio/docker",
"version": "1.0.59", "version": "1.0.61",
"description": "easy communication with docker remote api from node, TypeScript ready", "description": "easy communication with docker remote api from node, TypeScript ready",
"private": false, "private": false,
"main": "dist/index.js", "main": "dist/index.js",

View File

@ -1,6 +1,5 @@
import { expect, tap } from '@pushrocks/tapbundle'; import { expect, tap } from '@pushrocks/tapbundle';
import * as docker from '../ts/index'; import * as docker from '../ts/index';
import { DockerService } from '../ts/index';
let testDockerHost: docker.DockerHost; let testDockerHost: docker.DockerHost;
@ -94,8 +93,11 @@ tap.test('should create a service', async () => {
labels: {}, labels: {},
contentArg: '{"hi": "wow"}' contentArg: '{"hi": "wow"}'
}); });
const testService = await DockerService.createService(testDockerHost, { const testImage = await docker.DockerImage.createFromRegistry(testDockerHost, {
image: 'nginx:latest', imageUrl: 'nginx:latest'
});
const testService = await docker.DockerService.createService(testDockerHost, {
image: testImage,
labels: { labels: {
'testlabel': 'hi' 'testlabel': 'hi'
}, },

View File

@ -8,6 +8,7 @@ export class DockerHost {
* the path where the docker sock can be found * the path where the docker sock can be found
*/ */
public socketPath: string; public socketPath: string;
private registryToken: string = '';
/** /**
* the constructor to instantiate a new docker sock instance * the constructor to instantiate a new docker sock instance
@ -34,8 +35,18 @@ export class DockerHost {
const response = await this.request('POST', '/auth', { const response = await this.request('POST', '/auth', {
serveraddress: registryUrl, serveraddress: registryUrl,
username: userArg, username: userArg,
password: passArg, password: passArg
}); });
if (response.body.Status !== 'Login Succeeded') {
console.log(`Login failed with ${response.body.Status}`);
throw new Error(response.body.Status);
}
console.log(response.body.Status);
this.registryToken = plugins.smartstring.base64.encode(response.body.IdentityToken);
}
public setAuthToken(authToken: string) {
this.registryToken = authToken;
} }
/** /**
@ -122,6 +133,7 @@ export class DockerHost {
method: methodArg, method: methodArg,
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'X-Registry-Auth': this.registryToken,
Host: 'docker.sock' Host: 'docker.sock'
}, },
requestBody: dataArg, requestBody: dataArg,

View File

@ -119,7 +119,13 @@ export class DockerImage {
}); });
} }
public tagImage(newTag) {} /**
* tag an image
* @param newTag
*/
public async tagImage(newTag) {
throw new Error('.tagImage is not yet implemented');
}
/** /**
* pulls the latest version from the registry * pulls the latest version from the registry

View File

@ -39,13 +39,11 @@ export class DockerService {
// lets get the image // lets get the image
plugins.smartlog.defaultLogger.log( plugins.smartlog.defaultLogger.log(
'info', 'info',
`downloading image for service ${serviceCreationDescriptor.name}` `now creating service ${serviceCreationDescriptor.name}`
); );
const serviceImage = await DockerImage.createFromRegistry(dockerHost, {
imageUrl: serviceCreationDescriptor.image
});
const serviceVersion = serviceImage.Labels.version; // await serviceCreationDescriptor.image.pullLatestImageFromRegistry();
const serviceVersion = await serviceCreationDescriptor.image.getVersion();
const labels: interfaces.TLabels = { const labels: interfaces.TLabels = {
...serviceCreationDescriptor.labels, ...serviceCreationDescriptor.labels,
@ -78,7 +76,7 @@ export class DockerService {
Name: serviceCreationDescriptor.name, Name: serviceCreationDescriptor.name,
TaskTemplate: { TaskTemplate: {
ContainerSpec: { ContainerSpec: {
Image: serviceCreationDescriptor.image, Image: serviceCreationDescriptor.image.RepoTags[0],
Labels: labels, Labels: labels,
Secrets: secretArray Secrets: secretArray
}, },

View File

@ -1,10 +1,11 @@
import * as interfaces from './'; import * as interfaces from './';
import { DockerNetwork } from '../docker.classes.network'; import { DockerNetwork } from '../docker.classes.network';
import { DockerSecret } from '../docker.classes.secret'; import { DockerSecret } from '../docker.classes.secret';
import { DockerImage } from '../docker.classes.image';
export interface IServiceCreationDescriptor { export interface IServiceCreationDescriptor {
name: string; name: string;
image: string; image: DockerImage;
labels: interfaces.TLabels; labels: interfaces.TLabels;
networks: DockerNetwork[]; networks: DockerNetwork[];
networkAlias: string; networkAlias: string;