|
| 1 | +import { config as dotEnvConfig } from 'dotenv'; |
| 2 | +import * as path from 'path'; |
| 3 | +import type { |
| 4 | + StartedTestContainer, |
| 5 | + StartedDockerComposeEnvironment, |
| 6 | +} from 'testcontainers'; |
| 7 | +import { DockerComposeEnvironment } from 'testcontainers'; |
| 8 | + |
| 9 | +dotEnvConfig(); |
| 10 | + |
| 11 | +export type Containers = { |
| 12 | + postGresContainer: StartedTestContainer; |
| 13 | + l1_node: StartedTestContainer; |
| 14 | + fuel_node: StartedTestContainer; |
| 15 | + block_committer: StartedTestContainer; |
| 16 | +}; |
| 17 | + |
| 18 | +const PROJECT_ROOT = path.resolve(__dirname, '../../../'); |
| 19 | +let environment: StartedDockerComposeEnvironment; |
| 20 | + |
| 21 | +// responsible for starting all containers |
| 22 | +export async function startContainers() { |
| 23 | + // building images externally |
| 24 | + console.log('Setting up environment using docker compose...'); |
| 25 | + environment = await new DockerComposeEnvironment( |
| 26 | + path.resolve(PROJECT_ROOT, 'docker'), |
| 27 | + 'docker-compose.yml' |
| 28 | + ) |
| 29 | + .withBuild() |
| 30 | + .up(); |
| 31 | + |
| 32 | + console.log('Environment setup done...'); |
| 33 | + |
| 34 | + const postGresContainer = environment.getContainer('db-1'); |
| 35 | + |
| 36 | + const l1_node: StartedTestContainer = environment.getContainer('l1_chain-1'); |
| 37 | + const fuel_node: StartedTestContainer = |
| 38 | + environment.getContainer('fuel_core-1'); |
| 39 | + const block_committer: StartedTestContainer = environment.getContainer( |
| 40 | + 'fuel_block_commiter-1' |
| 41 | + ); |
| 42 | + |
| 43 | + return { postGresContainer, l1_node, fuel_node, block_committer }; |
| 44 | +} |
| 45 | + |
| 46 | +export async function stopEnvironment(): Promise<void> { |
| 47 | + console.log('Stopping environment...'); |
| 48 | + if (environment) { |
| 49 | + await environment.down(); |
| 50 | + } |
| 51 | +} |
0 commit comments