我如何在 Windows 10 中通过 Docker 桌面访问 Open Policy Agent 命令行

How can i access the Open Policy Agent Command Line via Docker Desktop in Windows 10

我正在尝试学习名为 Open Policy Agent 的各种功能,因为我认为它可能是基于微服务的应用程序中的有用工具。

这是此应用程序文档 'Running with Docker' 部分的 link:https://www.openpolicyagent.org/docs/latest/deployments/#running-with-docker

目前,我正在 运行ning Docker 在 Windows 10 环境中使用 Docker 桌面并且我已经有一个 docker-compose 文件为我的主要应用程序设置,其中包括各种 docker 图像。我的想法是,我可以简单地添加最新的 openpolicyagent 映像以及 openpolicyagent 演示-restful api,这样我就可以开始了解该服务了。为此,我将以下行添加到 docker-compose.yml:

  opa:
    image: openpolicyagent/opa:0.34.2
    ports:
      - 8181:8181
    command:
      - "run"
      - "--server"
      - "--log-level=debug"
      - "api_authz.rego"
    volumes:
      - C:\Sites\prosaurus\policy\api_authz.rego:/api_authz.rego

  api_server:
    image: openpolicyagent/demo-restful-api:latest
    ports:
      - 5000:5000
    environment:
      - OPA_ADDR=http://opa:8181
      - POLICY_PATH=/v1/data/httpapi/authz

这似乎有效,因为我可以转到 localhost:8181 并且我看到了查询和输入数据 (JSON) 框,因为我认为应该发生,但是我想测试此处提到的一些命令行功能:

https://www.openpolicyagent.org/docs/latest/#2-try-opa-eval

但是我似乎无法访问 docker 容器的命令行,该容器 运行 正在运行 OPA 代理。我尝试过的方法是通过 Windows 中的 Docker 桌面应用程序 GUI。在这个应用程序中,我可以看到所有 docker 实例,它们是 运行ning 并且每个实例都有一个 运行 CLI 的选项(您单击按钮,cli 打开)。除了 OPA 之外,它们都可以工作。当我点击那个时,cmd window 打开一瞬间,显示的内容太快以至于我无法阅读然后关闭。

我做错了什么?

OPA 可以 运行 有几种不同的方式,opa eval 明显不同于 运行将 OPA 作为服务器,即 opa run --server.

当您 运行 OPA 作为服务器时——这是您在生产中通常 运行 OPA 的方式——您通过 OPA 的 REST API.[=14 查询 OPA 的策略决策=]

opa eval 另一方面更像是 OPA 的瑞士军刀,允许您根据提供的一些策略和数据快速评估规则或表达式。

您可以将它们视为两种完全不同的工具。