pgpm 4.14.1 → 4.16.0

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.
@@ -25,6 +25,8 @@ PostgreSQL Options:
25
25
 
26
26
  Additional Services:
27
27
  --minio Include MinIO S3-compatible object storage (API: 9000, Console: 9001)
28
+ --ollama Include Ollama LLM inference server (API: 11434)
29
+ --gpu Enable NVIDIA GPU passthrough for Ollama (requires NVIDIA Container Toolkit)
28
30
 
29
31
  General Options:
30
32
  --help, -h Show this help message
@@ -33,12 +35,15 @@ General Options:
33
35
  Examples:
34
36
  pgpm docker start Start PostgreSQL only
35
37
  pgpm docker start --minio Start PostgreSQL + MinIO
38
+ pgpm docker start --ollama Start PostgreSQL + Ollama (CPU)
39
+ pgpm docker start --ollama --gpu Start PostgreSQL + Ollama (NVIDIA GPU)
36
40
  pgpm docker start --port 5433 Start on custom port
37
41
  pgpm docker start --shm-size 4g Start with 4GB shared memory
38
42
  pgpm docker start --recreate Remove and recreate containers
39
43
  pgpm docker start --recreate --minio Recreate PostgreSQL + MinIO
40
44
  pgpm docker stop Stop PostgreSQL
41
45
  pgpm docker stop --minio Stop PostgreSQL + MinIO
46
+ pgpm docker stop --ollama Stop PostgreSQL + Ollama
42
47
  pgpm docker ls List services and status
43
48
  `;
44
49
  const ADDITIONAL_SERVICES = {
@@ -56,6 +61,16 @@ const ADDITIONAL_SERVICES = {
56
61
  command: ['server', '/data', '--console-address', ':9001'],
57
62
  volumes: [{ name: 'minio-data', containerPath: '/data' }],
58
63
  },
64
+ ollama: {
65
+ name: 'ollama',
66
+ image: 'ollama/ollama',
67
+ ports: [
68
+ { host: 11434, container: 11434 },
69
+ ],
70
+ env: {},
71
+ volumes: [{ name: 'ollama-data', containerPath: '/root/.ollama' }],
72
+ gpuCapable: true,
73
+ },
59
74
  };
60
75
  function run(command, args, options = {}) {
61
76
  return new Promise((resolve, reject) => {
@@ -192,7 +207,7 @@ async function stopContainer(name) {
192
207
  await (0, inquirerer_1.cliExitWithError)(`Failed to stop container "${name}"`);
193
208
  }
194
209
  }
195
- async function startService(service, recreate) {
210
+ async function startService(service, recreate, gpu = false) {
196
211
  const { name, image, ports, env: serviceEnv, command } = service;
197
212
  const exists = await containerExists(name);
198
213
  const running = await isContainerRunning(name);
@@ -236,6 +251,9 @@ async function startService(service, recreate) {
236
251
  runArgs.push('-v', `${vol.name}:${vol.containerPath}`);
237
252
  }
238
253
  }
254
+ if (gpu && service.gpuCapable) {
255
+ runArgs.push('--gpus', 'all');
256
+ }
239
257
  runArgs.push(image);
240
258
  if (command) {
241
259
  runArgs.push(...command);
@@ -309,12 +327,13 @@ exports.default = async (argv, _prompter, _options) => {
309
327
  const password = args.password || 'password';
310
328
  const shmSize = args['shm-size'] || args.shmSize || '2g';
311
329
  const recreate = args.recreate === true;
330
+ const gpu = args.gpu === true;
312
331
  const includedServices = resolveServiceFlags(args);
313
332
  switch (subcommand) {
314
333
  case 'start':
315
334
  await startContainer({ name, image, port, user, password, shmSize, recreate });
316
335
  for (const service of includedServices) {
317
- await startService(service, recreate);
336
+ await startService(service, recreate, gpu);
318
337
  }
319
338
  break;
320
339
  case 'stop':
@@ -23,6 +23,8 @@ PostgreSQL Options:
23
23
 
24
24
  Additional Services:
25
25
  --minio Include MinIO S3-compatible object storage (API: 9000, Console: 9001)
26
+ --ollama Include Ollama LLM inference server (API: 11434)
27
+ --gpu Enable NVIDIA GPU passthrough for Ollama (requires NVIDIA Container Toolkit)
26
28
 
27
29
  General Options:
28
30
  --help, -h Show this help message
@@ -31,12 +33,15 @@ General Options:
31
33
  Examples:
32
34
  pgpm docker start Start PostgreSQL only
33
35
  pgpm docker start --minio Start PostgreSQL + MinIO
36
+ pgpm docker start --ollama Start PostgreSQL + Ollama (CPU)
37
+ pgpm docker start --ollama --gpu Start PostgreSQL + Ollama (NVIDIA GPU)
34
38
  pgpm docker start --port 5433 Start on custom port
35
39
  pgpm docker start --shm-size 4g Start with 4GB shared memory
36
40
  pgpm docker start --recreate Remove and recreate containers
37
41
  pgpm docker start --recreate --minio Recreate PostgreSQL + MinIO
38
42
  pgpm docker stop Stop PostgreSQL
39
43
  pgpm docker stop --minio Stop PostgreSQL + MinIO
44
+ pgpm docker stop --ollama Stop PostgreSQL + Ollama
40
45
  pgpm docker ls List services and status
41
46
  `;
42
47
  const ADDITIONAL_SERVICES = {
@@ -54,6 +59,16 @@ const ADDITIONAL_SERVICES = {
54
59
  command: ['server', '/data', '--console-address', ':9001'],
55
60
  volumes: [{ name: 'minio-data', containerPath: '/data' }],
56
61
  },
62
+ ollama: {
63
+ name: 'ollama',
64
+ image: 'ollama/ollama',
65
+ ports: [
66
+ { host: 11434, container: 11434 },
67
+ ],
68
+ env: {},
69
+ volumes: [{ name: 'ollama-data', containerPath: '/root/.ollama' }],
70
+ gpuCapable: true,
71
+ },
57
72
  };
58
73
  function run(command, args, options = {}) {
59
74
  return new Promise((resolve, reject) => {
@@ -190,7 +205,7 @@ async function stopContainer(name) {
190
205
  await cliExitWithError(`Failed to stop container "${name}"`);
191
206
  }
192
207
  }
193
- async function startService(service, recreate) {
208
+ async function startService(service, recreate, gpu = false) {
194
209
  const { name, image, ports, env: serviceEnv, command } = service;
195
210
  const exists = await containerExists(name);
196
211
  const running = await isContainerRunning(name);
@@ -234,6 +249,9 @@ async function startService(service, recreate) {
234
249
  runArgs.push('-v', `${vol.name}:${vol.containerPath}`);
235
250
  }
236
251
  }
252
+ if (gpu && service.gpuCapable) {
253
+ runArgs.push('--gpus', 'all');
254
+ }
237
255
  runArgs.push(image);
238
256
  if (command) {
239
257
  runArgs.push(...command);
@@ -307,12 +325,13 @@ export default async (argv, _prompter, _options) => {
307
325
  const password = args.password || 'password';
308
326
  const shmSize = args['shm-size'] || args.shmSize || '2g';
309
327
  const recreate = args.recreate === true;
328
+ const gpu = args.gpu === true;
310
329
  const includedServices = resolveServiceFlags(args);
311
330
  switch (subcommand) {
312
331
  case 'start':
313
332
  await startContainer({ name, image, port, user, password, shmSize, recreate });
314
333
  for (const service of includedServices) {
315
- await startService(service, recreate);
334
+ await startService(service, recreate, gpu);
316
335
  }
317
336
  break;
318
337
  case 'stop':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pgpm",
3
- "version": "4.14.1",
3
+ "version": "4.16.0",
4
4
  "author": "Constructive <developers@constructive.io>",
5
5
  "description": "PostgreSQL Package Manager - Database migration and package management CLI",
6
6
  "main": "index.js",
@@ -46,19 +46,19 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@inquirerer/utils": "^3.3.5",
49
- "@pgpmjs/core": "^6.11.1",
50
- "@pgpmjs/env": "^2.17.0",
51
- "@pgpmjs/export": "^0.3.1",
52
- "@pgpmjs/logger": "^2.5.2",
53
- "@pgpmjs/types": "^2.21.0",
49
+ "@pgpmjs/core": "^6.12.0",
50
+ "@pgpmjs/env": "^2.18.0",
51
+ "@pgpmjs/export": "^0.4.0",
52
+ "@pgpmjs/logger": "^2.6.0",
53
+ "@pgpmjs/types": "^2.22.0",
54
54
  "@pgsql/quotes": "^17.1.0",
55
55
  "appstash": "^0.7.0",
56
56
  "find-and-require-package-json": "^0.9.1",
57
57
  "genomic": "^5.3.9",
58
58
  "inquirerer": "^4.7.0",
59
59
  "js-yaml": "^4.1.0",
60
- "pg-cache": "^3.4.4",
61
- "pg-env": "^1.8.2",
60
+ "pg-cache": "^3.5.0",
61
+ "pg-env": "^1.9.0",
62
62
  "pgsql-deparser": "^17.18.2",
63
63
  "semver": "^7.7.4",
64
64
  "shelljs": "^0.10.0",
@@ -76,5 +76,5 @@
76
76
  "pg",
77
77
  "pgsql"
78
78
  ],
79
- "gitHead": "8a4291a1c8809bf9063e6e29ec87bd78c94bbf57"
79
+ "gitHead": "1b3af3c5189b9ca2e765b9239a4b287099e64a03"
80
80
  }