我需要忽略一行的pyright检查。有什么特别的评论吗?
def create_slog(group: SLogGroup, data: Optional[dict] = None):
SLog.insert_one(SLog(group=group, data=data)) # pyright: disable
Run Code Online (Sandbox Code Playgroud)
# pyright: disable -- 不起作用
这是 winston@3 记录器的演示代码:
const { createLogger, format, transports } = require("winston")
const { combine, timestamp, prettyPrint } = format
const logger = createLogger({
format: combine(timestamp(), prettyPrint({ colorize: true }))
})
logger.add(new transports.Console())
logger.info("test message", { data: { a: 1, b: [1, 2, 3, 4], d: new Date() } })
Run Code Online (Sandbox Code Playgroud)
它打印:
{ data: { a: 1, b: [ 1, 2, 3, 4 ], d: 2018-07-17T09:38:43.253Z },
level: 'info',
message: 'test message',
timestamp: '2018-07-17T09:38:43.253Z',
[Symbol(level)]: 'info',
[Symbol(splat)]:
[ { data: { a: …Run Code Online (Sandbox Code Playgroud) 我有一个包含两个服务的 docker-compose 文件:
如果我使用绑定安装的 Caddyfile,它可以正常工作:
caddy:
image: caddy:2.0.0-alpine
ports:
- 80:80
- 443:443
volumes:
- caddy:/data
- .Caddyfile:/etc/caddy/Caddyfile
Run Code Online (Sandbox Code Playgroud)
Caddy 文件非常简单:
my-domain.com {
reverse_proxy my-app:3000
}
Run Code Online (Sandbox Code Playgroud)
但我想在不上传 Caddyfile 的情况下将其部署在服务器上。我想像这样配置我的 docker-compose.yml:
version: "3"
services:
my-app:
image: my-app
expose:
- 3000
caddy:
image: caddy:2
ports:
- 80:80
- 443:443
environment:
- reverse_proxy_from=my-app:3000
- reverse_proxy_to=my-domain.com
volumes:
- caddy:/data
volumes:
caddy:
Run Code Online (Sandbox Code Playgroud)
也许也可以通过球童 API 来做到这一点。当我尝试在裸操作系统上配置反向代理时,它可以工作。但是当我尝试使用 docker ( docker-compose exec caddy caddy reverse-proxy --from my-site.net --to my-app:3000)执行此操作时,我得到了一些不清楚的错误消息:
root@test:/xxx# docker-compose exec caddy …Run Code Online (Sandbox Code Playgroud) 我可以使用这样的 Caddyfile 拥有一个具有多个域的服务器(+ https 和 LetsEncrypt):
site1.com {
reverse_proxy localhost:3001
}
site2.com {
reverse_proxy localhost:3002
}
site3.com {
reverse_proxy localhost:3003
}
Run Code Online (Sandbox Code Playgroud)
但我想在没有 Caddyfile 的情况下运行 caddy,并且我想通过管理 API 动态添加此类代理。
他们有一个API,但我不明白如何在不需要 Caddyfile 的情况下为 caddy 添加新的反向代理。
我正在寻找此请求的 JSON 格式,它可以是这样的(伪请求):
curl localhost:2019/load \
-X POST \
-H "Content-Type: application/json" \
-data "{'domain': 'site1.com', 'tls': 'yes', 'proxy': 'http://localhost:3001'}"
curl localhost:2019/load \
-X POST \
-H "Content-Type: application/json" \
-data "{'domain': 'site2.com', 'tls': 'yes', 'proxy': 'http://localhost:3002'}"
Run Code Online (Sandbox Code Playgroud)
是否可以仅通过 API 添加反向代理?我使用的是Caddy v2.0
有一个银河角色:git@site.net/ansible-myapp.git
我可以这样安装:
ansible-galaxy install git+git@site.net/ansible-myapp.git
Run Code Online (Sandbox Code Playgroud)
,但它创建了一个名为“ansible-myapp”的角色。
如何安装与 git url 中名称不同的角色?
可以通过requirements.yml来完成:
- src: git@site.net/ansible-myapp.git
scm: git
name: myapp
Run Code Online (Sandbox Code Playgroud)
ansible-galaxy install -r requirements.yml将以名称“myapp”安装它
但是如何在没有requirements.yml 文件的情况下通过一个命令来完成此操作呢?
我正在尝试为 Winston v3 制作自定义 json 格式化程序。
这是一个带有演示的单个文件:
const { createLogger, format, transports } = require("winston")
const { combine, timestamp, prettyPrint } = format
const logger = createLogger({
format: combine(timestamp(), prettyPrint())
})
logger.add(new transports.Console())
logger.info("test message", { data: { a: 1, b: [1, 2, 3, 4], d: new Date() } })
try {
throw new Error("I'm an error!")
} catch (err) {
logger.error(err)
}
Run Code Online (Sandbox Code Playgroud)
它打印:
{ data: { a: 1, b: [ 1, 2, 3, 4 ], d: 2018-07-21T08:59:27.958Z },
level: …Run Code Online (Sandbox Code Playgroud) 仅当 Ubuntu 服务器上启用了 ufw 时,我才需要运行一些任务。
伪代码如下所示:
- name: detect if ufw is enabled
magical_module: ???
register: ufw_is_enabled
- name: my task
when: ufw_is_enabled
Run Code Online (Sandbox Code Playgroud)
我只看到这个不优雅的解决方案:
ufs statusroot@test:~# ufw status
Status: inactive
Run Code Online (Sandbox Code Playgroud)
也许启用 ufw 时有一些文件?在这种情况下,就可以使用stat模块了。还有其他解决方案吗?