0

我有一个 node.js 服务,它存储在应用程序启动时发送到开放策略代理服务的访问策略。策略可以是测试,但要这样做,它们需要在不属于我的服务的开放策略代理环境中运行。在构建我的 node.js 服务 docker 映像时,有没有办法运行这些测试?所以除非所有测试都通过,否则不会构建图像?

因此,dockerfile 可能看起来像这样:

FROM openpolicyagent/opa:latest
CMD ["test"]
# somehow check that all tests pass and if not return an error
FROM node:8
# node-related stuff
4

2 回答 2

0

您可以创建一个构建管道,在其中分别构建 Node 应用程序和 Envoy+OPA 代理,然后再创建另一个包含访问规则测试和使用 Cypress 的独立项目,而不是将所有内容都放在一个项目中。然后,您的构建管道可以无条件地将新版本安装到 DEV 环境中,但需要单独的测试项目通过,直到它部署在 STAGE 和 PROD 环境中。

于 2020-01-28T14:23:54.440 回答
-1

您可以将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在构建镜像期间执行,CMDENTRYPOINT在从构建镜像启动容器期间执行。

于 2019-03-13T09:28:56.447 回答