我有一个node.js服务,它存储在应用程序启动时发送给open policy agent服务的访问策略。可以测试策略,但要执行此操作,需要在不属于我服务一部分的开放策略代理环境中运行这些策略。在构建我的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
发布于 2020-01-28 22:23:54
您可以创建一个构建管道,在其中分别构建Node应用程序和Envoy+OPA代理,然后拥有另一个包含访问规则、测试和使用Cypress的独立项目,而不是将所有内容都放到一个项目中。您的构建管道可以无条件地将新版本安装到DEV环境中,但需要通过单独的测试项目,直到它部署到STAGE和PROD环境中为止。
发布于 2019-03-13 17:28:56
您可以使用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
是在从构建的镜像启动容器时执行的。
https://stackoverflow.com/questions/55137708
复制相似问题