alwaysai
Version:
The alwaysAI command-line interface (CLI)
45 lines (41 loc) • 1.37 kB
text/typescript
import * as logSymbols from 'log-symbols';
import { buildDockerImage } from '../../util/docker/docker-cmd';
import { CliTerseError } from '@alwaysai/alwayscli';
import { Spawner, echo, logger, stringifyError } from '../../util';
export async function buildDockerImageComponent(props: {
targetHostSpawner: Spawner;
targetHardware?: string;
dockerImageTag?: string;
dockerfilePath?: string;
pullBaseImage?: boolean;
}) {
const {
targetHostSpawner,
targetHardware,
dockerImageTag,
dockerfilePath,
pullBaseImage
} = props;
const dockerTagStr = dockerImageTag ? ` (tag=${dockerImageTag})` : '';
const targetHardwareStr = targetHardware
? ` (ALWAYSAI_HW=${targetHardware})`
: '';
const BUILD_DOCKER_IMAGE_MESSAGE = `Build docker image${dockerTagStr}${targetHardwareStr}`;
echo(`- ${BUILD_DOCKER_IMAGE_MESSAGE}`);
try {
const dockerImageId = await buildDockerImage({
targetHostSpawner,
targetHardware,
dockerImageTag,
dockerfilePath,
pullBaseImage,
runInForeground: true
});
echo(`${logSymbols.success} ${BUILD_DOCKER_IMAGE_MESSAGE}`);
return dockerImageId;
} catch (exception) {
logger.error(stringifyError(exception));
echo(`${logSymbols.error} ${BUILD_DOCKER_IMAGE_MESSAGE}`);
throw new CliTerseError('Docker build failed! Check Docker logs.');
}
}