Advertisement
Guest User

Untitled

a guest
Jun 19th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. const spawn = require('child_process').spawn;
  2. const meta = require('../package');
  3.  
  4. // 作業ディレクトリをパッケージのあるディレクトリにする。
  5. process.chdir(__dirname);
  6. process.chdir('..');
  7.  
  8. Promise.resolve()
  9. // Docker Machineがインストールされているか確認する。
  10. .then(() => (new Promise((resolve, reject) => {
  11. console.log('Check Docker Machine.')
  12. const machine = spawn('docker-machine', ['version']);
  13. machine.on('error', reject);
  14. machine.on('exit', () => {
  15. console.log('Docker Machine found.');
  16. return resolve();
  17. });
  18. })))
  19. // Docker Machineがインストールされている場合、Docker Machineを起動する。
  20. .then(() => (new Promise((resolve, reject) => {
  21. console.log('\nStart Docker Machine.');
  22. const machine = spawn('docker-machine', ['start'], {
  23. stdio: [null, process.stdout, process.stderr],
  24. });
  25. machine.on('error', reject);
  26. machine.on('exit', () => {
  27. return resolve();
  28. });
  29. })))
  30. // Dockerコマンドへ渡すための、Docker Machineの設定を取得する。
  31. .then(() => (new Promise((resolve, reject) => {
  32. console.log('\nGet configuration of Docker Machine.');
  33. const machine = spawn('docker-machine', ['config'], {
  34. stdio: [null, null, process.stderr],
  35. });
  36. let out = '';
  37. machine.stdout.on('data', (data) => { out += data; });
  38. machine.on('error', reject);
  39. machine.on('exit', (code) => {
  40. if (code !== 0) {
  41. return reject(new Error('Doccker Machine failed.'));
  42. }
  43. const config = out.split('\n').filter((item) => (item !== ''));
  44. return resolve(config);
  45. });
  46. })))
  47. // Docker Machineが見つからない場合のエラーを無視する。
  48. .catch((err) => {
  49. if (err.code === 'ENOENT') {
  50. return [];
  51. }
  52. throw err;
  53. })
  54. // 取得した設定を用いて、Dockerイメージをビルドする。
  55. .then((config) => (new Promise((resolve, reject) => {
  56. console.log('\nBuild Docker Image.');
  57. const machine = spawn('docker', [...config, 'build', '-t', `${meta.name}:${meta.version}`, '.'], {
  58. stdio: [null, process.stdout, process.stderr],
  59. });
  60. machine.on('error', reject);
  61. machine.on('exit', (code) => {
  62. if (code !== 0) {
  63. return reject(new Error('Docker failed.'));
  64. }
  65. return resolve(config);
  66. });
  67. })))
  68. .then(() => {
  69. console.log('\nBuild succeeded.\n')
  70. process.exit(0);
  71. })
  72. .catch((err) => {
  73. console.error(`\nBuild failed. Error: ${err}\n`);
  74. process.exit(1);
  75. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement