UNPKG

@wocker/ws

Version:

Docker workspace for web projects

78 lines (77 loc) 3.43 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DnsService = void 0; const core_1 = require("@wocker/core"); const docker_module_1 = require("@wocker/docker-module"); const path_1 = __importDefault(require("path")); const env_1 = require("../../../env"); let DnsService = class DnsService { constructor(dockerService) { this.dockerService = dockerService; this.imageName = "wocker-dns:0.0.1"; this.containerName = "wocker-dns"; } async start(restart, rebuild) { console.info("Starting DNS service..."); console.info("DNS service currently isn't working"); if (restart || rebuild) { await this.dockerService.removeContainer(this.containerName); } await this.build(rebuild); let container = await this.dockerService.getContainer(this.containerName); const fs = new core_1.FileSystem(`${env_1.ROOT_DIR}/plugins/dns`); if (!fs.exists("etc/dnsmasq.conf")) { fs.writeFile("etc/dnsmasq.conf", ""); } if (!container) { container = await this.dockerService.createContainer({ name: this.containerName, image: this.imageName, volumes: [ "/var/run/docker.sock.raw:/var/run/docker.sock:ro", "/var/run/docker.sock.raw:/tmp/docker.sock:ro", `${fs.path("app/Procfile")}:/app/Procfile`, `${fs.path("app/dnsmasq.conf.tmpl")}:/app/dnsmasq.conf.tmpl`, `${fs.path("etc/dnsmasq.conf")}:/etc/dnsmasq.conf` ] }); } const { State: { Running } } = await container.inspect(); if (!Running) { await container.start(); } } async stop() { await this.dockerService.removeContainer(this.containerName); } async build(rebuild) { if (await this.dockerService.imageExists(this.imageName)) { if (!rebuild) { return; } await this.dockerService.imageRm(this.imageName); } await this.dockerService.buildImage({ tag: this.imageName, dockerfile: "./Dockerfile", context: path_1.default.join(env_1.ROOT_DIR, "fixtures/dns") }); } }; exports.DnsService = DnsService; exports.DnsService = DnsService = __decorate([ (0, core_1.Injectable)(), __metadata("design:paramtypes", [docker_module_1.DockerService]) ], DnsService);