我有一个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
答案 0 :(得分:0)
您可能无需创建所有项目,而是可以创建一条构建管道,在其中分别构建Node应用程序和Envoy + OPA代理,然后再创建一个包含访问规则测试并使用Cypress的独立项目。然后,您的构建管道可以无条件地将新版本安装到DEV环境中,但是需要通过单独的测试项目,直到将其部署在STAGE和PROD环境中为止。
答案 1 :(得分:-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
在构建映像期间执行,而CMD
和ENTRYPOINT
在从生成的映像启动容器期间执行。