Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 2x 2x 2x 2x 2x 2x 2x 2x 2x | import { containerExec, imageExists, pullImageAsync } from 'dockerode-utils'; import Docker from 'dockerode'; export { Docker }; export { containerExec } from 'dockerode-utils'; const CONTAINER_IMAGE = 'postgres:12.16-alpine'; const CONTAINER_NAME = 'cardano-test'; export const removePostgresContainer = async (): Promise<void> => { const docker = new Docker(); try { const container = docker.getContainer(CONTAINER_NAME); try { await container.stop(); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { // 304 = container already stopped Iif (error.statusCode !== 304) throw error; } await container.remove({ v: true }); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { // 404 = container not found Iif (error.statusCode !== 404) throw error; } }; const ensurePgServiceReadiness = async (container: Docker.Container, user: string, db: string) => { await containerExec(container, [ 'bash', '-c', `until psql -U ${user} ${db} -c "SELECT 1" > /dev/null 2>&1 ; do echo "waiting pg service to be ready"; sleep 1; done` ]); }; export const setupPostgresContainer = async ( user: string, password: string, port: string, binds: Docker.HostConfig['Binds'], checkDb: string ) => { const docker = new Docker(); const needsToPull = !(await imageExists(docker, CONTAINER_IMAGE)); Iif (needsToPull) await pullImageAsync(docker, CONTAINER_IMAGE); await removePostgresContainer(); const container = await docker.createContainer({ Env: [`POSTGRES_PASSWORD=${password}`, `POSTGRES_USER=${user}`], HostConfig: { Binds: binds, PortBindings: { '5432/tcp': [ { HostPort: port } ] } }, Image: CONTAINER_IMAGE, name: CONTAINER_NAME }); await container.start(); await ensurePgServiceReadiness(container, user, checkDb); return container; }; |