Можно ли использовать Docker для временного создания тестовой среды?
У меня есть служба node.js, в которой хранятся политики доступа, отправляемые открытой службе агента политики при запуске приложения. Политики могут быть тестами, но для этого их нужно запускать в открытой среде агента политики, которая не является частью моей службы. Есть ли способ запустить эти тесты при построении моего образа докера службы node.js? Таким образом, изображение не будет построено, если все тесты не пройдут?
Итак, файл Docker может выглядеть примерно так:
FROM openpolicyagent/opa:latest
CMD ["test"]
# somehow check that all tests pass and if not return an error
FROM node:8
# node-related stuff
1 ответ
Вместо того, чтобы помещать все в один проект, вы могли бы создать конвейер сборки, в котором вы создаете свое приложение Node и прокси Envoy+OPA отдельно, а затем получите еще один независимый проект, который содержит тесты правил доступа и использует, возможно, Cypress. Затем ваш конвейер сборки может безоговорочно установить новую версию в среду DEV, но требует прохождения отдельного тестового проекта до его развертывания в средах STAGE и PROD.
Ты можешь использовать RUN
утверждение для желаемых шагов, например:
FROM <some_base_image>
RUN mkdir /tests
WORKDIR /tests
COPY ./tests .
RUN npm install && npm run build && npm test
RUN mkdir /src
WORKDIR /src
COPY ./src .
RUN npm install && npm run build
CMD npm start
Замечания: RUN
исполняется во время построения изображения в то время как CMD
а также ENTRYPOINT
выполняется при запуске контейнера из встроенного образа.