@wocker/ws 1.0.24 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/lib/{RootModule.d.ts → AppModule.d.ts} +1 -1
  2. package/lib/{RootModule.js → AppModule.js} +9 -22
  3. package/lib/controllers/ProjectController.d.ts +0 -1
  4. package/lib/controllers/ProjectController.js +0 -16
  5. package/lib/env.d.ts +1 -1
  6. package/lib/env.js +3 -3
  7. package/lib/main.js +2 -2
  8. package/lib/modules/core/index.d.ts +2 -0
  9. package/lib/modules/{app → core}/index.js +19 -6
  10. package/lib/modules/docker/index.d.ts +2 -1
  11. package/lib/modules/docker/index.js +5 -1
  12. package/lib/modules/docker/services/ComposeService.d.ts +32 -0
  13. package/lib/modules/docker/services/ComposeService.js +129 -0
  14. package/lib/modules/docker/services/DockerService.js +2 -24
  15. package/lib/modules/docker/services/ImageService.d.ts +2 -8
  16. package/lib/modules/docker/services/ImageService.js +15 -3
  17. package/lib/modules/docker/services/ModemService.d.ts +3 -2
  18. package/lib/modules/docker/services/ModemService.js +24 -5
  19. package/lib/modules/docker/services/ProtoService.js +2 -2
  20. package/lib/modules/docker/type/ComposeConfig.d.ts +12 -0
  21. package/lib/modules/docker/type/ComposeConfig.js +2 -0
  22. package/lib/modules/index.d.ts +1 -1
  23. package/lib/modules/index.js +1 -1
  24. package/lib/modules/keystore/services/KeystoreService.d.ts +2 -3
  25. package/lib/modules/keystore/services/KeystoreService.js +2 -4
  26. package/lib/modules/preset/controllers/PresetController.js +2 -1
  27. package/lib/modules/preset/controllers/PresetListener.d.ts +3 -2
  28. package/lib/modules/preset/controllers/PresetListener.js +6 -3
  29. package/lib/modules/preset/services/PresetService.js +11 -2
  30. package/lib/modules/project/controllers/ProjectController.d.ts +1 -0
  31. package/lib/modules/project/controllers/ProjectController.js +16 -0
  32. package/lib/modules/project/services/ProjectService.d.ts +8 -4
  33. package/lib/modules/project/services/ProjectService.js +50 -8
  34. package/lib/modules/proxy/services/ProxyService.js +4 -3
  35. package/lib/utils/index.d.ts +0 -1
  36. package/lib/utils/index.js +0 -1
  37. package/package.json +4 -3
  38. package/lib/modules/app/index.d.ts +0 -2
  39. package/lib/utils/followProgress2.d.ts +0 -1
  40. package/lib/utils/followProgress2.js +0 -63
  41. package/plugins/proxmox/Dockerfile +0 -35
  42. package/plugins/proxy/Dockerfile +0 -25
  43. package/plugins/proxy/Procfile +0 -2
  44. package/plugins/proxy/bin/wocker-create-ca +0 -19
  45. package/plugins/proxy/bin/wocker-create-cert +0 -38
  46. package/plugins/proxy/bin/wocker-create-domains +0 -21
  47. package/presets/shopify/Dockerfile +0 -160
  48. package/presets/shopify/bin/compare-version +0 -3
  49. package/presets/shopify/config.json +0 -26
  50. package/presets/shopify/etc/apache2/apache2.conf +0 -230
  51. package/presets/shopify/etc/apache2/mods-available/mpm_prefork.conf +0 -16
  52. package/presets/shopify/etc/apache2/sites-available/000-default.conf +0 -21
  53. package/proto/buildkit.proto +0 -55
  54. package/proto/solver/pb/ops.proto +0 -443
@@ -81,13 +81,14 @@ let PresetController = class PresetController {
81
81
  await this.dockerService.imageRm(imageName);
82
82
  }
83
83
  await this.dockerService.buildImage({
84
+ version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
84
85
  tag: imageName,
85
86
  labels: {
86
87
  presetName: preset.name
87
88
  },
88
89
  buildArgs: buildArgs,
89
90
  context: preset.path,
90
- src: preset.dockerfile
91
+ dockerfile: preset.dockerfile
91
92
  });
92
93
  }
93
94
  async presets() {
@@ -1,13 +1,14 @@
1
- import { EventService, Project } from "@wocker/core";
1
+ import { EventService, Project, AppConfigService } from "@wocker/core";
2
2
  import { DockerService } from "../../docker";
3
3
  import { PresetRepository } from "../repositories/PresetRepository";
4
4
  import { PresetService } from "../services/PresetService";
5
5
  export declare class PresetListener {
6
+ protected readonly appConfigService: AppConfigService;
6
7
  protected readonly eventService: EventService;
7
8
  protected readonly dockerService: DockerService;
8
9
  protected readonly presetRepository: PresetRepository;
9
10
  protected readonly presetService: PresetService;
10
- constructor(eventService: EventService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
11
+ constructor(appConfigService: AppConfigService, eventService: EventService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
11
12
  onInit(project: Project): Promise<void>;
12
13
  protected onRebuild(project: Project): Promise<void>;
13
14
  protected onBeforeStart(project: Project): Promise<void>;
@@ -17,7 +17,8 @@ const PresetRepository_1 = require("../repositories/PresetRepository");
17
17
  const PresetService_1 = require("../services/PresetService");
18
18
  const utils_2 = require("../../../utils");
19
19
  let PresetListener = class PresetListener {
20
- constructor(eventService, dockerService, presetRepository, presetService) {
20
+ constructor(appConfigService, eventService, dockerService, presetRepository, presetService) {
21
+ this.appConfigService = appConfigService;
21
22
  this.eventService = eventService;
22
23
  this.dockerService = dockerService;
23
24
  this.presetRepository = presetRepository;
@@ -118,13 +119,14 @@ let PresetListener = class PresetListener {
118
119
  project.imageName = this.presetService.getImageNameForProject(project, preset);
119
120
  if (!await this.dockerService.imageExists(project.imageName)) {
120
121
  await this.dockerService.buildImage({
122
+ version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
121
123
  tag: project.imageName,
122
124
  labels: {
123
125
  presetName: preset.name
124
126
  },
125
127
  buildArgs: project.buildArgs,
126
128
  context: preset.path,
127
- src: preset.dockerfile
129
+ dockerfile: preset.dockerfile
128
130
  });
129
131
  }
130
132
  }
@@ -133,7 +135,8 @@ let PresetListener = class PresetListener {
133
135
  exports.PresetListener = PresetListener;
134
136
  exports.PresetListener = PresetListener = __decorate([
135
137
  (0, core_1.Controller)(),
136
- __metadata("design:paramtypes", [core_1.EventService,
138
+ __metadata("design:paramtypes", [core_1.AppConfigService,
139
+ core_1.EventService,
137
140
  docker_1.DockerService,
138
141
  PresetRepository_1.PresetRepository,
139
142
  PresetService_1.PresetService])
@@ -40,18 +40,27 @@ let PresetService = class PresetService {
40
40
  break;
41
41
  }
42
42
  case "select": {
43
+ const options = (0, utils_1.normalizeOptions)(config.options);
44
+ const defaultValue = config.multiple ? options.reduce((defaultValue, option) => {
45
+ if (values[option.value] === "true") {
46
+ return [
47
+ ...defaultValue,
48
+ option.value
49
+ ];
50
+ }
51
+ return defaultValue;
52
+ }, []) : values[name];
43
53
  const result = await (0, utils_1.promptSelect)({
44
54
  required: config.required,
45
55
  multiple: config.multiple,
46
56
  message: config.message,
47
57
  options: config.options,
48
- default: values[name]
58
+ default: defaultValue
49
59
  });
50
60
  if (!config.multiple) {
51
61
  values[name] = result;
52
62
  }
53
63
  else {
54
- const options = (0, utils_1.normalizeOptions)(config.options);
55
64
  for (const option of options) {
56
65
  if (result.includes(option.value)) {
57
66
  values[option.value] = "true";
@@ -10,4 +10,5 @@ export declare class ProjectController {
10
10
  start(name?: string, restart?: boolean, build?: boolean, attach?: boolean): Promise<void>;
11
11
  stop(name?: string): Promise<void>;
12
12
  eject(name?: string): Promise<void>;
13
+ exec(command?: string[], name?: string): Promise<void>;
13
14
  }
@@ -82,6 +82,10 @@ let ProjectController = class ProjectController {
82
82
  delete project.imageName;
83
83
  project.save();
84
84
  }
85
+ async exec(command, name) {
86
+ const project = this.projectService.get(name);
87
+ await this.projectService.exec(project, command);
88
+ }
85
89
  };
86
90
  exports.ProjectController = ProjectController;
87
91
  __decorate([
@@ -117,6 +121,18 @@ __decorate([
117
121
  __metadata("design:paramtypes", [String]),
118
122
  __metadata("design:returntype", Promise)
119
123
  ], ProjectController.prototype, "eject", null);
124
+ __decorate([
125
+ (0, core_1.Command)("exec [...command]"),
126
+ __param(0, (0, core_1.Param)("command")),
127
+ __param(1, (0, core_1.Option)("name", {
128
+ type: "string",
129
+ alias: "n",
130
+ description: "The name of the project"
131
+ })),
132
+ __metadata("design:type", Function),
133
+ __metadata("design:paramtypes", [Array, String]),
134
+ __metadata("design:returntype", Promise)
135
+ ], ProjectController.prototype, "exec", null);
120
136
  exports.ProjectController = ProjectController = __decorate([
121
137
  (0, core_1.Controller)(),
122
138
  (0, core_1.Description)("Project commands"),
@@ -1,15 +1,18 @@
1
- import { Project, AppConfigService, EventService, ProjectService as CoreProjectService, ProjectServiceSearchParams as SearchParams } from "@wocker/core";
2
- import { ProjectRepository } from "../repositories/ProjectRepository";
3
- import { DockerService } from "../../docker";
1
+ import { Project, AppConfigService, EventService, ProcessService, ProjectService as CoreProjectService, ProjectServiceSearchParams as SearchParams, LogService } from "@wocker/core";
2
+ import { DockerService, ComposeService } from "../../docker";
4
3
  import { PresetService, PresetRepository } from "../../preset";
4
+ import { ProjectRepository } from "../repositories/ProjectRepository";
5
5
  export declare class ProjectService extends CoreProjectService {
6
6
  protected readonly appConfigService: AppConfigService;
7
+ protected readonly processService: ProcessService;
7
8
  protected readonly eventService: EventService;
8
9
  protected readonly dockerService: DockerService;
10
+ protected readonly composeService: ComposeService;
9
11
  protected readonly projectRepository: ProjectRepository;
10
12
  protected readonly presetService: PresetService;
11
13
  protected readonly presetRepository: PresetRepository;
12
- constructor(appConfigService: AppConfigService, eventService: EventService, dockerService: DockerService, projectRepository: ProjectRepository, presetService: PresetService, presetRepository: PresetRepository);
14
+ protected readonly logService: LogService;
15
+ constructor(appConfigService: AppConfigService, processService: ProcessService, eventService: EventService, dockerService: DockerService, composeService: ComposeService, projectRepository: ProjectRepository, presetService: PresetService, presetRepository: PresetRepository, logService: LogService);
13
16
  get(name?: string): Project;
14
17
  search(params?: SearchParams): Project[];
15
18
  searchOne(params?: SearchParams): Project | null;
@@ -17,5 +20,6 @@ export declare class ProjectService extends CoreProjectService {
17
20
  start(project: Project, restart?: boolean, rebuild?: boolean, attach?: boolean): Promise<void>;
18
21
  stop(project: Project): Promise<void>;
19
22
  build(project: Project, rebuild?: boolean): Promise<void>;
23
+ exec(project: Project, command: string[]): Promise<void>;
20
24
  logs(project: Project, detach?: boolean): Promise<void>;
21
25
  }
@@ -11,30 +11,33 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ProjectService = void 0;
13
13
  const core_1 = require("@wocker/core");
14
- const ProjectRepository_1 = require("../repositories/ProjectRepository");
15
14
  const docker_1 = require("../../docker");
16
15
  const preset_1 = require("../../preset");
16
+ const ProjectRepository_1 = require("../repositories/ProjectRepository");
17
17
  let ProjectService = class ProjectService extends core_1.ProjectService {
18
- constructor(appConfigService, eventService, dockerService, projectRepository, presetService, presetRepository) {
18
+ constructor(appConfigService, processService, eventService, dockerService, composeService, projectRepository, presetService, presetRepository, logService) {
19
19
  super();
20
20
  this.appConfigService = appConfigService;
21
+ this.processService = processService;
21
22
  this.eventService = eventService;
22
23
  this.dockerService = dockerService;
24
+ this.composeService = composeService;
23
25
  this.projectRepository = projectRepository;
24
26
  this.presetService = presetService;
25
27
  this.presetRepository = presetRepository;
28
+ this.logService = logService;
26
29
  }
27
30
  get(name) {
28
31
  const project = name
29
32
  ? this.projectRepository.searchOne({ name })
30
33
  : this.projectRepository.searchOne({
31
- path: this.appConfigService.pwd()
34
+ path: this.processService.pwd()
32
35
  });
33
36
  if (!project) {
34
37
  throw new Error("Project not found");
35
38
  }
36
39
  if (name) {
37
- this.appConfigService.setPWD(project.path);
40
+ this.processService.chdir(project.path);
38
41
  }
39
42
  return project;
40
43
  }
@@ -88,6 +91,10 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
88
91
  break;
89
92
  }
90
93
  case core_1.PROJECT_TYPE_COMPOSE: {
94
+ await this.composeService.up({
95
+ context: project.path,
96
+ composefile: project.composefile
97
+ });
91
98
  break;
92
99
  }
93
100
  }
@@ -100,6 +107,8 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
100
107
  case core_1.PROJECT_TYPE_PRESET:
101
108
  await this.dockerService.attach(project.containerName);
102
109
  break;
110
+ case core_1.PROJECT_TYPE_COMPOSE:
111
+ break;
103
112
  }
104
113
  }
105
114
  }
@@ -111,8 +120,13 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
111
120
  case core_1.PROJECT_TYPE_PRESET:
112
121
  await this.dockerService.removeContainer(project.containerName);
113
122
  break;
114
- case core_1.PROJECT_TYPE_COMPOSE:
123
+ case core_1.PROJECT_TYPE_COMPOSE: {
124
+ await this.composeService.down({
125
+ context: project.path,
126
+ composefile: project.composefile
127
+ });
115
128
  break;
129
+ }
116
130
  }
117
131
  await this.eventService.emit("project:stop", project);
118
132
  }
@@ -129,10 +143,11 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
129
143
  }
130
144
  if (!await this.dockerService.imageExists(project.imageName)) {
131
145
  await this.dockerService.buildImage({
146
+ version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
132
147
  tag: project.imageName,
133
148
  buildArgs: project.buildArgs,
134
149
  context: project.path,
135
- src: project.dockerfile
150
+ dockerfile: project.dockerfile
136
151
  });
137
152
  }
138
153
  break;
@@ -154,24 +169,48 @@ let ProjectService = class ProjectService extends core_1.ProjectService {
154
169
  }
155
170
  if (!await this.dockerService.imageExists(project.imageName)) {
156
171
  await this.dockerService.buildImage({
172
+ version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
157
173
  tag: project.imageName,
158
174
  labels: {
159
175
  "org.wocker.preset": preset.name
160
176
  },
161
177
  buildArgs: project.buildArgs,
162
178
  context: preset.path,
163
- src: preset.dockerfile
179
+ dockerfile: preset.dockerfile
164
180
  });
165
181
  }
166
182
  }
167
183
  break;
168
184
  }
169
185
  case core_1.PROJECT_TYPE_COMPOSE: {
186
+ await this.composeService.build({
187
+ context: project.path,
188
+ composefile: project.composefile
189
+ });
170
190
  break;
171
191
  }
172
192
  }
173
193
  await this.eventService.emit("project:build", project, rebuild);
174
194
  }
195
+ async exec(project, command) {
196
+ switch (project.type) {
197
+ case core_1.PROJECT_TYPE_IMAGE:
198
+ case core_1.PROJECT_TYPE_DOCKERFILE:
199
+ case core_1.PROJECT_TYPE_PRESET:
200
+ await this.dockerService.exec(project.containerName, command, true);
201
+ break;
202
+ case core_1.PROJECT_TYPE_COMPOSE: {
203
+ const [service, ...args] = command;
204
+ await this.composeService.exec({
205
+ service,
206
+ args,
207
+ context: project.path,
208
+ composefile: project.composefile
209
+ });
210
+ break;
211
+ }
212
+ }
213
+ }
175
214
  async logs(project, detach) {
176
215
  switch (project.type) {
177
216
  case core_1.PROJECT_TYPE_IMAGE:
@@ -203,9 +242,12 @@ exports.ProjectService = ProjectService;
203
242
  exports.ProjectService = ProjectService = __decorate([
204
243
  (0, core_1.Injectable)("PROJECT_SERVICE"),
205
244
  __metadata("design:paramtypes", [core_1.AppConfigService,
245
+ core_1.ProcessService,
206
246
  core_1.EventService,
207
247
  docker_1.DockerService,
248
+ docker_1.ComposeService,
208
249
  ProjectRepository_1.ProjectRepository,
209
250
  preset_1.PresetService,
210
- preset_1.PresetRepository])
251
+ preset_1.PresetRepository,
252
+ core_1.LogService])
211
253
  ], ProjectService);
@@ -145,12 +145,13 @@ let ProxyService = class ProxyService extends core_1.ProxyService {
145
145
  await this.dockerService.imageRm(oldImage);
146
146
  }
147
147
  await this.dockerService.buildImage({
148
+ version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
148
149
  tag: this.imageName,
149
- context: Path.join(env_1.PLUGINS_DIR, "proxy"),
150
- src: "./Dockerfile",
151
150
  buildArgs: {
152
151
  SSH_PASSWORD: this.appConfigService.getMeta("PROXY_SSH_PASSWORD")
153
- }
152
+ },
153
+ context: Path.join(env_1.PLUGINS_DIR, "proxy"),
154
+ dockerfile: "./Dockerfile"
154
155
  });
155
156
  }
156
157
  async logs() {
@@ -1,6 +1,5 @@
1
1
  export * from "./escapeRegExp";
2
2
  export * from "./exec";
3
- export * from "./followProgress2";
4
3
  export * from "./get-cursor-position";
5
4
  export * from "./injectVariables";
6
5
  export * from "./parse-table";
@@ -16,7 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./escapeRegExp"), exports);
18
18
  __exportStar(require("./exec"), exports);
19
- __exportStar(require("./followProgress2"), exports);
20
19
  __exportStar(require("./get-cursor-position"), exports);
21
20
  __exportStar(require("./injectVariables"), exports);
22
21
  __exportStar(require("./parse-table"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wocker/ws",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "author": "Kris Papercut <krispcut@gmail.com>",
5
5
  "description": "Docker workspace for web projects",
6
6
  "license": "MIT",
@@ -33,12 +33,13 @@
33
33
  "make-coverage-badge": "make-coverage-badge"
34
34
  },
35
35
  "dependencies": {
36
- "@wocker/core": "1.0.24",
36
+ "@wocker/core": "1.0.25",
37
37
  "@wocker/utils": "^2.0.3",
38
38
  "async-mutex": "^0.4.0",
39
39
  "axios": "^1.6.7",
40
40
  "child_process": "^1.0.2",
41
41
  "cli-table3": "^0.6.2",
42
+ "docker-compose": "^1.2.0",
42
43
  "dockerode": "^4.0.2",
43
44
  "fs": "^0.0.1-security",
44
45
  "keytar": "^7.9.0",
@@ -54,7 +55,7 @@
54
55
  "@types/jest": "^29.5.14",
55
56
  "@types/md5": "^2.3.2",
56
57
  "@types/mute-stream": "^0.0.4",
57
- "@types/node": "^22.14.1",
58
+ "@types/node": "^24.0.13",
58
59
  "@types/unzipper": "^0.10.10",
59
60
  "@wocker/testing": "1.0.2",
60
61
  "jest": "^29.7.0",
@@ -1,2 +0,0 @@
1
- export declare class AppModule {
2
- }
@@ -1 +0,0 @@
1
- export declare const followProgress2: (stream: NodeJS.ReadableStream) => Promise<void>;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.followProgress2 = void 0;
7
- const protobufjs_1 = __importDefault(require("protobufjs"));
8
- const yoctocolors_cjs_1 = __importDefault(require("yoctocolors-cjs"));
9
- const env_1 = require("../env");
10
- const followProgress2 = async (stream) => {
11
- const root = await protobufjs_1.default.load([
12
- `${env_1.ROOT_DIR}/proto/solver/pb/ops.proto`,
13
- `${env_1.ROOT_DIR}/proto/buildkit.proto`
14
- ]);
15
- const StatusResponse = root.lookupType("moby.buildkit.v1.StatusResponse");
16
- return new Promise((resolve, reject) => {
17
- let isEnded = false;
18
- let success = 0, error = 0;
19
- const handleEnd = () => {
20
- if (!isEnded) {
21
- isEnded = true;
22
- console.log(`success: ${success} errors: ${error}`);
23
- resolve();
24
- return;
25
- }
26
- };
27
- stream.on("data", (data) => {
28
- const content = data.toString().replace(/}\s*\{/g, '},{'), items = JSON.parse(`[${content}]`);
29
- for (const item of items) {
30
- switch (item.id) {
31
- case "moby.buildkit.trace": {
32
- if (!item.aux) {
33
- break;
34
- }
35
- let buffer = Buffer.from(item.aux, "base64");
36
- try {
37
- const decoded = StatusResponse.decode(buffer);
38
- const obj = StatusResponse.toObject(decoded, {
39
- enums: String,
40
- longs: String,
41
- bytes: String,
42
- defaults: true,
43
- });
44
- console.dir(obj, { depth: null });
45
- success++;
46
- }
47
- catch (err) {
48
- error++;
49
- console.error(yoctocolors_cjs_1.default.red(`Error: ${err.message}`));
50
- }
51
- break;
52
- }
53
- default:
54
- break;
55
- }
56
- }
57
- });
58
- stream.on("end", handleEnd);
59
- stream.on("close", handleEnd);
60
- stream.on("error", reject);
61
- });
62
- };
63
- exports.followProgress2 = followProgress2;
@@ -1,35 +0,0 @@
1
- FROM debian:stable
2
-
3
- RUN apt-get update \
4
- && apt-get install -y wget
5
-
6
- RUN apt-get update && apt-get install -y gnupg
7
-
8
- RUN echo "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription" | tee /etc/apt/sources.list.d/pve-install-repo.list
9
-
10
- #RUN wget http://download.proxmox.com/debian/proxmox-release-bullseye.gpg
11
- RUN wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg
12
- RUN apt-key add proxmox-ve-release-6.x.gpg
13
-
14
- RUN echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
15
-
16
- RUN apt update
17
- RUN apt install proxmox-ve postfix open-iscsi
18
-
19
- # RUN apt remove os-prober
20
-
21
- #RUN mv proxmox-release-bullseye.gpg /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
22
-
23
- #RUN chmod +r /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
24
-
25
- #RUN apt update
26
-
27
- #RUN apt full-upgrade -y
28
-
29
- #RUN apt update
30
-
31
- #RUN echo "deb http://download.proxmox.com/debian/ceph-pacific bullseye main" | tee /etc/apt/sources.list.d/ceph.list
32
-
33
- # RUN apt-get install -y proxmox-ve postfix open-iscsi
34
-
35
- #RUN apt update
@@ -1,25 +0,0 @@
1
- FROM nginxproxy/nginx-proxy:1.6.4-alpine
2
-
3
- ARG SSH_PASSWORD=''
4
-
5
- COPY ./bin/wocker-create-ca /usr/local/bin/wocker-create-ca
6
- COPY ./bin/wocker-create-cert /usr/local/bin/wocker-create-cert
7
- COPY ./bin/wocker-create-domains /usr/local/bin/wocker-create-domains
8
-
9
- RUN chmod +x /usr/local/bin/wocker-create-ca && \
10
- chmod +x /usr/local/bin/wocker-create-cert && \
11
- chmod +x /usr/local/bin/wocker-create-domains
12
-
13
- RUN if [ -n "$SSH_PASSWORD" ]; then \
14
- apk update && apk add --no-cache openssh; \
15
- mkdir -p /var/run/sshd; \
16
- echo "root:$SSH_PASSWORD" | chpasswd; \
17
- sed -i 's/AllowTcpForwarding no/AllowTcpForwarding yes/' /etc/ssh/sshd_config; \
18
- sed -i 's/GatewayPorts no/GatewayPorts yes/' /etc/ssh/sshd_config; \
19
- sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config; \
20
- sed -i 's/#UsePAM yes/UsePAM no/' /etc/ssh/sshd_config; \
21
- ssh-keygen -A; \
22
- echo "sshd: /usr/sbin/sshd -D" >> /app/Procfile; \
23
- fi
24
-
25
- EXPOSE 22
@@ -1,2 +0,0 @@
1
- nginx: nginx -g "daemon off;"
2
- docker-gen: docker-gen -watch -config /app/docker-gen.conf
@@ -1,19 +0,0 @@
1
- #!/bin/bash
2
-
3
- CA_DIR=/etc/nginx/ca-certs
4
-
5
- if [ ! -f $CA_DIR/Wocker-CA.key ]; then
6
- mkdir -p $CA_DIR
7
-
8
- openssl req -x509 -nodes -new -sha256 \
9
- -days 1024 \
10
- -newkey rsa:2048 \
11
- -keyout $CA_DIR/Wocker-CA.key \
12
- -out $CA_DIR/Wocker-CA.pem \
13
- -subj "/C=UA/ST=Kyiv/O=Wocker/CN=Wocker-CA"
14
-
15
- openssl x509 \
16
- -outform pem \
17
- -in $CA_DIR/Wocker-CA.pem \
18
- -out $CA_DIR/Wocker-CA.crt
19
- fi
@@ -1,38 +0,0 @@
1
- #!/bin/bash
2
-
3
- if [ -z "$1" ]; then
4
- echo "Usage: $0 <name>"
5
- exit 1
6
- fi
7
-
8
- NAME=$1
9
- CA_DIR=/etc/nginx/ca-certs
10
- CERT_DIR=/etc/nginx/certs
11
- DAYS_VALID=365
12
- COUNTRY="UA"
13
- STATE="Kyiv"
14
- CITY="Kyiv"
15
- ORGANIZATION="Wocker"
16
- ORG_UNIT="Wocker"
17
- COMMON_NAME=$NAME
18
-
19
- mkdir -p $CERT_DIR
20
-
21
- openssl req \
22
- -new \
23
- -nodes \
24
- -newkey rsa:2048 \
25
- -keyout $CERT_DIR/$NAME.key \
26
- -out $CERT_DIR/$NAME.csr \
27
- -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORG_UNIT/CN=$COMMON_NAME"
28
-
29
- openssl x509 \
30
- -req \
31
- -sha256 \
32
- -days 1024 \
33
- -in $CERT_DIR/$NAME.csr \
34
- -CA $CA_DIR/Wocker-CA.pem \
35
- -CAkey $CA_DIR/Wocker-CA.key \
36
- -CAcreateserial \
37
- -extfile $CERT_DIR/$NAME.ext \
38
- -out $CERT_DIR/$NAME.crt
@@ -1,21 +0,0 @@
1
- #!/bin/bash
2
-
3
- NAME=$1
4
- CERT_DIR=/etc/nginx/certs
5
-
6
- shift
7
-
8
- CONTENT="authorityKeyIdentifier=keyid,issuer
9
- basicConstraints=CA:FALSE
10
- keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
11
- subjectAltName = @alt_names
12
- [alt_names]"
13
-
14
- index=1
15
- for arg in "$@"; do
16
- CONTENT="$CONTENT
17
- DNS.$index = $arg"
18
- ((index++))
19
- done
20
-
21
- echo "$CONTENT" > $CERT_DIR/$NAME.ext