我尝试设置一个 docker 映像来压缩和加密文件。
我的问题是,当我尝试使用 Dockerfile 执行此操作时,gpg --list-keysshell 挂起并且没有任何反应。
没有错误消息。我在日志中看不到任何内容。
我的 Dockerfile :
FROM alpine:3
COPY public.asc /
RUN apk add --no-cache gnupg openssh && ssh-keygen -A && mkdir /root/.ssh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 22/tcp
COPY entrypoint.sh /
RUN gpg --import /public.asc
Run Code Online (Sandbox Code Playgroud)
如果我删除RUN gpg --import /public.asc并将其直接运行到附加到容器的 shell 中,然后运行gpg --list-keys,它工作正常并返回密钥。
也许我遗漏了 Docker 如何构建镜像的一些内容?
我正在使用 Pole Emploi 的 API,但 25 分钟后,当我的令牌过期时,我遇到了 401 错误。
我寻找一种获取新令牌并重试请求的方法,但我无法理解中间件的工作原理,以及我是否应该使用中间件来满足我的需求。
在 Guzzle 的文档上是这样写的:
中间件函数返回一个接受下一个要调用的处理程序的函数。然后,这个返回的函数返回另一个充当组合处理程序的函数——它接受请求和选项,并返回一个通过响应实现的承诺。您组合的中间件可以修改请求、添加自定义请求选项以及修改下游处理程序返回的 Promise。
这是文档中的示例代码:
use Psr\Http\Message\RequestInterface;
function my_middleware()
{
return function (callable $handler) {
return function (RequestInterface $request, array $options) use ($handler) {
return $handler($request, $options);
};
};
}
Run Code Online (Sandbox Code Playgroud)
所以我认为我需要管理“承诺”以查看其HTTP代码是否为401,然后获取新令牌并重试请求?
我迷路了,所以如果有人能用不同的词向我解释这个逻辑,我将不胜感激:)
先感谢您。