标签: backend

python docker sdk如何在container.run中运行多个命令

我将 python 3 与 docker sdk 一起使用,并使用它 containers.run来创建一个容器并运行我的代码,当我将命令参数与一个命令作为字符串一起使用时,它工作正常

看代码

client = docker.from_env()
container = client.containers.run(image=image, command="echo 1")
Run Code Online (Sandbox Code Playgroud)

当我尝试使用命令列表时(根据文档,这很好)

client = docker.from_env()
container = client.containers.run(image=image, command=["echo 1", "echo 2"])
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

OCI 运行时创建失败:container_linux.go:345: 启动容器进程导致“exec: \”echo 1\”: 在 $PATH 中找不到可执行文件

使用一个字符串时也会发生同样的情况

"echo 1; echo 2"
Run Code Online (Sandbox Code Playgroud)

我正在使用 ubuntu 19 和 docker

Docker 版本 18.09.9,内部版本 1752eb3

它过去可以很好地处理命令列表,新版本的 docker 有什么问题吗?还是我在这里遗漏了一些东西?

python backend docker dockerpy devops

2
推荐指数
2
解决办法
6179
查看次数

什么是微服务以及与 MVC 有何联系

我熟悉 spring boot 框架,并且开发了一个有助于处理在线作业的应用程序。我使用了几个服务类来处理应用程序的不同任务,其结构可以在这里看到。

我的项目的文件结构

我见过几个复杂的应用程序根据其在应用程序中执行的任务构建为独立的包。

(1) 我的第一个问题是我的应用程序可以称为微服务应用程序吗?因为我使用了独立的服务来进行应用程序开发。

(2) 我的第二个问题是,在微服务架构中开发的应用程序可以同时具有 MVC 架构吗?但是我在几个教程中看到它们是两种不同的架构。但是 Moicroservices 应用程序同时也具有模型、视图和控制器时间。

那么这2个可以同时使用吗?

谢谢你!!

backend spring-boot microservices

2
推荐指数
1
解决办法
1万
查看次数

如何动态获取 NGINX 代理的 API 访问令牌

我开始尝试使用 iOS 应用程序的 IGDB API。几天前,IGDB 推出了 V4,现在需要通过 oAuth2 向 Twitch 授权才能接收应用程序访问令牌。

凭借我糟糕的后端知识(我昨天开始学习 NGINX),我设法设置了一个 NGINX Web 服务器,它代理对 IGDB API 的请求并将应用程序访问令牌注入到 HTTP 标头中。目前这工作正常。

我的 proxy.conf 包含在 nginx.conf 中,如下所示:

server {
    listen 443 ssl;
    server_name myhost.com;

    #SSL Config cut out  
    ...

    location / {
        proxy_pass https://api.igdb.com/v4/games;
        proxy_ssl_server_name on;
        proxy_set_header Client-ID "MY TWITCH APP CLIENT ID";
        proxy_set_header Authorization "Bearer THE_APP_ACCESS_TOKEN";
    }
}
Run Code Online (Sandbox Code Playgroud)

然而THE_APP_ACCESS_TOKEN是我手动请求的。出于测试目的,这没问题,但它会在大约 60 天后过期(根据 Twitch 开发文档)。我现在想知道如何动态请求访问令牌(并以某种方式存储它?),在它过期时刷新它并将其注入到 proxy.conf 中。

在研究过程中,我偶然发现了 HTTP Auth Request 模块与 NGINX JavaScript 模块的结合(https://www.nginx.com/blog/validating-oauth-2-0-access-tokens-nginx/)。

现在我想知道在代理请求之前通过身份验证请求模块触发令牌请求是否是一种合理的方法,使用 JavaScript 模块解析 …

api backend nginx nginx-reverse-proxy twitch-api

2
推荐指数
1
解决办法
5582
查看次数

使用 Jest 测试 Express 时,有没有办法修复此“TypeError:express.json 不是函数”?

我正在尝试学习如何在express.js 上运行 Jest 测试,但收到此错误

TypeError: express.json is not a function 
Run Code Online (Sandbox Code Playgroud)

但是,如果我注释掉 index.js 中的这两行:

app.use(express.json({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb', extended: true}));
Run Code Online (Sandbox Code Playgroud)

然后它就会工作并通过前两个测试。我该如何修复这个错误?

这里是index.js

这里是index.test.js

unit-testing backend node.js express jestjs

2
推荐指数
1
解决办法
812
查看次数

如何使用 Ktor 服务器向其他服务器发送 POST 请求?

我使用 IDEA 生成模板并注意到 Application.module 中的 runBlocking 如下:

    runBlocking {
    // Sample for making a HTTP Client request
        val message = client.post<JsonSampleClass> {
            url("http://127.0.0.1:8080/path/to/endpoint")
            contentType(ContentType.Application.Json)
            body = JsonSampleClass(hello = "world")
        }
   }
Run Code Online (Sandbox Code Playgroud)

但是当我这样写向另一个服务器(例如获取天气的服务器)发送 Post 请求时,我得到:

java.io.IOException:管道损坏

我不知道是我写错了还是写错了地方。

backend kotlin server ktor

2
推荐指数
1
解决办法
7116
查看次数

删除“主页”并直接转到 WordPress 管理仪表板上的 WooCommerce“订单”

使用最新版本的 WooCommerce,有一个“主页”部分,我无法使用任何内置设置删除该部分。

我已设法删除分析和营销选项,但如何删除“主页”选项,并以这种方式使其像以前一样 - 所有订单的概述?

add_filter( 'woocommerce_admin_get_feature_config', 'remove_wc_marketing_menu_option', 10, 1 );
function remove_wc_marketing_menu_option($feature_config){   
$feature_config['marketing'] = false;
$feature_config['analytics'] = false;
return $feature_config;
}
Run Code Online (Sandbox Code Playgroud)

php wordpress backend woocommerce

2
推荐指数
1
解决办法
760
查看次数

为什么在使用“应用程序平台”时将 API 密钥存储在 DigitalOceans API“环境变量”选项中是安全的?

我正在设置一个 NodeJS 后端,它需要保存一些 API 密钥来联系其他 Firebase 来对用户进行身份验证。

我已经能够发布后端并成功从其上的 API 端点获取 HTTP 回复。我使用 Express 来运行 NodeJS API。

现在我希望 NodeJS API 充当我的用户和数据库接触点。但我不确定在哪里安全地存储该项目的 API 密钥。因为我对这种类型的安全性比较陌生。

因此,我用 Google 搜索了一下,发现人们说 .env 文件不是存储 API 密钥的安全位置。然而,在DigitalOcean 文档中,它说了以下内容:

环境变量是存储敏感信息(例如 API 密钥)或需要从应用程序中的任何位置全局访问的信息(例如版本号或硬编码路径)的绝佳位置。

所以我的问题是,为什么 DigitalOcean 会说在环境变量中存储 API 密钥是安全的,而许多其他消息来源却说它不安全。这是因为危险在于文件的可访问性,而 DigitalOcean 以某种方式保护该文件吗?我注意到他们有一个“秘密”布尔框,您可以勾选它,它表示它不会出现在控制台中。但对于普通人来说,它是否也是完全无法接触的呢?

我主要关心的是防止黑客或恶意的人访问 API 密钥。我不担心拥有合法访问权限的人会滥用它,只担心没有合法访问权限的人会滥用它。

期待您的见解。

javascript security backend node.js digital-ocean

2
推荐指数
1
解决办法
2984
查看次数

如何在 Docker 上运行时重定向 FastAPI 文档

我需要将“ /swagger-ui.html ”重定向到文档页面。

我试过:

app = FastAPI()

@app.get("/swagger-ui.html")
async def docs_redirect():
    response = RedirectResponse(url='/docs')
    return response
Run Code Online (Sandbox Code Playgroud)

app = FastAPI(docs_url="/swagger-ui.html")

@app.get("/")
async def docs_redirect():
    response = RedirectResponse(url='/swagger-ui.html')
    return response
Run Code Online (Sandbox Code Playgroud)

但是,直接运行项目(使用 uvicorn 命令)我可以工作,但是当我将其放在 Docker 容器上时,它会在浏览器上输出此消息,询问位置,但没有任何内容可以作为输入:

无法推断基本 URL。当使用动态 Servlet 注册或 API 位于 API 网关后面时,这种情况很常见。基本 url 是提供所有 swagger 资源的根。例如,如果 api 在http://example.org/api/v2/api-docs上可用,则基本 URL 为http://example.org/api/。请手动输入位置:

这是我的 dockerfile:

FROM python:3.8
USER root
RUN mkdir -p /usr/local/backend
WORKDIR /usr/local/backend
EXPOSE 8080
ARG BUILD_ENV=dev 
ENV BUILD_ENV=$BUILD_ENV
COPY . /usr/local/backend
RUN pip install -r requirements.txt …
Run Code Online (Sandbox Code Playgroud)

python backend docker dockerfile fastapi

2
推荐指数
2
解决办法
5871
查看次数

错误:创建项目失败。有关详细信息,请参阅 firebase-debug.log

我找到 0 个 Firebase 项目。\n\xe2\x9c\x94 输入新 Firebase 项目的项目 ID (例如 my-cool-project) \xc2\xb7 onoja\ni 已成功创建新 Firebase 项目 onoja。\nFirebaseCommandException: 错误尝试运行命令时,Firebase CLI 上出现此错误。\n命令: firebase 项目:create onoja --json\n错误: 无法创建项目。有关更多信息,请参阅 firebase-debug.log。

\n

cloud debugging backend firebase flutter

2
推荐指数
1
解决办法
6357
查看次数

fastapi 日志记录错误并且 swagger 不起作用

我正在使用 fastapi 制作一个 REST API。

我只是想知道为什么每当我执行服务器时都会收到以下消息。

INFO:     Started server process [97154]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.10/logging/__init__.py", line 1100, in emit
    msg = self.format(record)
  File "/usr/lib/python3.10/logging/__init__.py", line 943, in format
    return fmt.format(record)
  File "/usr/lib/python3.10/logging/__init__.py", line 678, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.10/logging/__init__.py", line 368, in getMessage
    msg = msg % self.args
TypeError: %d format: a real number is required, not str
Call stack:
  File "mYlOcAtIoN/src/main.py", …
Run Code Online (Sandbox Code Playgroud)

python rest backend fastapi uvicorn

2
推荐指数
1
解决办法
1410
查看次数