我有两个 docker 存储库在同一个 JFrog 云帐户/实例上运行。一个用于内部候选版本,另一个用于潜在的外部 GC 版本。我希望能够构建 docker 镜像并推送到内部存储库,让 QA/UAT 进城,然后将镜像复制到发布存储库。我不希望从源重建图像。不幸的是,当我尝试拉取、标记然后推送图像时,出现错误:
未经授权:将带有清单 v2 架构 1 的 Docker 映像推送到此存储库被阻止。
两个存储库都阻止了模式 1 清单,但我正在向内部存储库推送良好的内容,因此我无法将相同的图像推送到发布存储库没有多大意义。
我已经设置了一个非常简单的测试来确认(实际存储库 URL 被审查):
% docker pull hello-world:latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
...
% docker tag hello-world:latest internal-rc.jfrog.io/hello-world:1.0.0-beta
% docker push internal-rc.jfrog.io/hello-world:1.0.0-beta
The push refers to repository [internal-rc.jfrog.io/hello-world]
9c27e219663c: Pushed
...
% docker system prune -a
...
Total reclaimed space: 131.8MB
% docker image pull internal-rc.jfrog.io/hello-world:1.0.0-beta
1.0.0-beta: Pulling from hello-world
0e03bdcc26d7: Pull complete …Run Code Online (Sandbox Code Playgroud) 我在 docker-compose.yml 中有以下内容
web:
image: my_web
build:
context: ./
dockerfile: web.docker
container_name: my_web
networks:
- front
ports:
- "80:8080"
volumes:
- wwwlogs:/var/logs/www
env_file:
- ${SERVICE_ENVIRONMENT}.env
links:
- revproxy
logging:
driver: awslogs
options:
awslogs-group: my-web-group
awslogs-region: us-east-1
awslogs-stream-prefix: my-web
Run Code Online (Sandbox Code Playgroud)
这在生产中运行良好,并按预期将所有内容发送到 CloudWatch。但是,当我想在本地使用相同的 docker 文件(不要发送到 AWS,只需登录到 STDOUT/STDERR)和暂存(我想发送到不同的 awslogs 的地方)时,我不清楚这应该如何工作-组/-前缀)。
有什么想法吗?一般来说,我不喜欢为每个环境使用单独的 docker 文件 - 重复的代码条目增加了某些东西被遗漏或未正确维护的可能性。但是 Docker 似乎有条件地提供东西的能力有限。
我正在尝试使用 Keycloak 保护 Java Spring Boot REST 服务。其中一部分涉及服务和 Keycloak 之间的通信以获取众所周知的 OpenID 配置。
当所有内容都未加密(通过 HTTP)时,一切正常。当我将 SSL 证书添加到混合中时(技术上是在两个服务前面的 nginx 服务器上),我收到 SSL 握手错误。
如果我直接使用浏览器访问 REST 服务或 Keycloak,则浏览器不会报告 SSL 错误。使用curl从其余服务器计算机到Keycloak计算机看起来也很好,并且我尝试让nginx强制TLS 1.2或1.3响应。
当实际的 REST 服务尝试访问 Keycloak 服务时出现的错误如下所示:
2022-03-21 19:30:59.526 WARN 27 --- [nio-8080-exec-3] o.keycloak.adapters.KeycloakDeployment : Failed to load URLs from https://.../auth/realms/MyRealm/.well-known/openid-configuration
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[na:na]
...
Run Code Online (Sandbox Code Playgroud)
我一直在查看很多其他答案,例如这个答案,但我似乎无法让该服务打印实际异常之外的任何调试信息。我试过了:
-Djavax.net.debug=ssl到启动服务器的命令行System.setProperty("javax.net.debug", "ssl");到main()应用程序的功能logging.level.javax=TRACE和添加logging.level.net=TRACE到 application.properties似乎没有什么能带我去任何地方。输出仍然只是服务器启动结束
2022-03-21 19:30:34.219 INFO 27 --- [nio-8080-exec-1] …Run Code Online (Sandbox Code Playgroud)