diff --git a/src/services/PocketBaseService/Dockerfile b/src/services/PocketBaseService/Dockerfile index 6bd301db..41c42f05 100644 --- a/src/services/PocketBaseService/Dockerfile +++ b/src/services/PocketBaseService/Dockerfile @@ -1,6 +1,8 @@ -FROM alpine:3.18 +FROM node:20-alpine3.18 -RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/* +RUN apk update +RUN apk add --no-cache ca-certificates bash +RUN npm i -g pnpm RUN adduser -D pocketbase diff --git a/src/services/PocketBaseService/index.ts b/src/services/PocketBaseService/index.ts index 132a26b5..f08f2f59 100644 --- a/src/services/PocketBaseService/index.ts +++ b/src/services/PocketBaseService/index.ts @@ -1,4 +1,4 @@ -import { APEX_DOMAIN, mkInstanceDataPath } from '$constants' +import { APEX_DOMAIN, PH_PROJECT_ROOT, mkInstanceDataPath } from '$constants' import { InstanceLogger, PortService } from '$services' import { LoggerService, @@ -12,6 +12,7 @@ import { map } from '@s-libs/micro-dash' import Docker, { Container, ContainerCreateOptions } from 'dockerode' import { existsSync } from 'fs' import MemoryStream from 'memorystream' +import { join } from 'path' import { AsyncReturnType } from 'type-fest' import { PocketbaseReleaseVersionService } from '../PocketbaseReleaseVersionService' import { buildImage } from './buildImage' @@ -121,6 +122,15 @@ export const createPocketbaseService = async ( stderr.on('data', _stdErrData) const Binds = [`${mkInstanceDataPath(slug)}:/home/pocketbase`] Binds.push(`${binPath}:/home/pocketbase/pocketbase:ro`) + Binds.push( + `${join( + PH_PROJECT_ROOT(), + 'src', + 'services', + 'PocketBaseService', + `run.sh`, + )}:/home/pocketbase/run.sh:ro`, + ) if (extraBinds.length > 0) { Binds.push(...extraBinds) diff --git a/src/services/PocketBaseService/run.sh b/src/services/PocketBaseService/run.sh new file mode 100644 index 00000000..711d8984 --- /dev/null +++ b/src/services/PocketBaseService/run.sh @@ -0,0 +1,19 @@ +#!/bim/bash + +./pocketbase serve --http 0.0.0.0:8090 & +pid1=$! + +# Start the second process in the background +# process2 & +# pid2=$! + +# Wait for either process to exit +wait -n +exit_status=$? + +# Kill the remaining process (if any) +kill $pid1 2>/dev/null +kill $pid2 2>/dev/null + +# Exit with the captured exit status +exit $exit_status \ No newline at end of file