#package #docker
При анализе проектов я часто вижу, что нет проверки Dockerfile. Так на одном из проектов выяснилось, что сборка Docker image сломана два с половиной месяца.
Поэтому CI должен проверять, что:
➡️ Docker image собирается
➡️ Docker container стартует
➡️ health-check отдает успешный ответ
Если на проекте существуют e2e тесты, то #nodejs необходимо запускать как и в продакшене – как контейнер. Для этого отлично подходит пакет testcontainers. Он позволяет работать с Docker контекстом из кода. Вот пример из документации:
const path = require("path");const { GenericContainer } = require("testcontainers");const buildContext = path.resolve(__dirname, "dir-containing-dockerfile");const container = await GenericContainer.fromDockerfile(buildContext) .withBuildArg("ARG_KEY", "ARG_VALUE") .build();const startedContainer = await container .withExposedPorts(8080) .start();