小编Fra*_*y_V的帖子

在 docker compose 中指定用于健康检查的 postgres 参数的安全方法

我使用 Secrets 来通过使用 Postgres 作为数据库的 Docker 堆栈来管理用户名、密码和数据库名。我现在想使用Docker提供的健康检查功能。

docker-compose.yml

x-db-secrets: &db_secrets
    - psql_user
    - psql_pass
    - psql_dbname

services:
  db:
    image: postgres:13.1
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER_FILE=/run/secrets/psql_user
      - POSTGRES_DB_FILE=/run/secrets/psql_dbname
      - POSTGRES_PASSWORD_FILE=/run/secrets/psql_pass
    secrets: *db_secrets
    healthcheck:
      test: pg_isready -U myuser -d db_prod
      interval: 10s
      timeout: 3s
      retries: 3

(... other services...)

volumes:
  postgres_data:
  static_content:
  media_content:

secrets:
  psql_user:
    external: true
  psql_pass:
    external: true
  psql_dbname:
    external: true
Run Code Online (Sandbox Code Playgroud)

正如本节中可以指出的healthcheck:,我通过运行状况检查公开了数据库用户名和数据库名称。我的问题(根据答案进行一些后续行动):

  • 有关系吗?docker-compose.yml 文件并不存在于运行此代码的主机上。因此,潜在的攻击者无法从那里访问此信息...但是,由于 docker 将执行运行状况检查,因此它可能会在该容器中进行实时跟踪(shell?存储该过程的 docker 配置文件?)
  • 如果确实重要,我如何在不暴露该信息的情况下执行健康检查?我必须直接使用这些秘密,但是我无法弄清楚如何在 docker-compose文件中使用这些秘密......

想法?解决方法?

额外细节:

  • 我目前正在检查数据库是否已从使用它的(烧瓶)容器中启动。例如,flask 服务检查是否可以 ping …

docker docker-secrets health-check

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

结构化表示法的$(美元符号)等价物(Excel工作表表格)

我基本上在Excel中寻找$ A:$ A等价的结构化表引用.

说我有这个公式:

=INDEX(tChoice,MATCH(OFFSET(tData[@[cm_sex]],-3,0),tChoice[name],0),3)
Run Code Online (Sandbox Code Playgroud)

基本上,tData是一个充满原始数据(许多列)的表,取自调查(所以每列都是调查问题,或多或少).tChoice是一个较小的表(只有几列),我基本上想要查看tChoice原始数据值并返回基于该标签的标签(对于value-label表是tChoice).

我实际上想要tData [@ [cm_sex]]自动递增,因为我在左边的单元格中应用公式(所以我循环遍历原始数据的所有列),但是我不希望列tChoice [name]更改:例如,根据原始表数据查找匹配的列.

这相当于写A:A(它会自动递增到B:B,C:C等)和$ A:$ A(不会).

结构化表引用是否有等价的美元符号?

PS:当然我可以通过增加整个事情等其他东西,而不是用tChoice [name]取代tChoice [*]代替搜索和替换范围...但是为它准备一个合适的符号会更清晰,更有效率....

没有在支持页面中找到它(https://support.office.com/en-us/article/Using-structured-references-with-Excel-tables-f5ed2452-2337-4f71-bed3-c8ae6d2b276e)

excel structured-references

12
推荐指数
1
解决办法
5620
查看次数

使用元类来跟踪 python 中的实例

我需要跟踪某些类的实例(并对这些类执行其他操作)。我希望不必在相关类中声明任何额外的代码,因此理想情况下所有内容都应该在元类中处理。

我不知道如何向这些类的每个新实例添加弱引用。例如:

class Parallelizable(type):
    def __new__(cls, name, bases, attr):
        meta = super().__new__(cls, name, bases, attr)
        # storing the instances in this WeakSet
        meta._instances = weakref.WeakSet()
        return meta

    @property
    def instances(cls):
        return [x for x in cls._instances]

class Foo(metaclass=Parallelizable)
    def __init__(self, name):
        super().__init__()
        self.name = name

        # I would like to avoid having to do that - instead have the metaclass manage it somehow
        self._instances.add(self)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我似乎无法在元类方面找到一个钩子来进入__init__Foo 的......

python metaclass python-3.x

5
推荐指数
1
解决办法
544
查看次数

docker-compose 环境变量加载 .env,但不加载 compose 文件中的 env_file

我真的不明白 docker-compose 在环境变量文件方面的行为。

我已经为运行 2 个 Flask 应用程序的简单回显服务器设置定义了一些变量。

.env

FLASK_RUN_PORT=5000
WEB_1_PORT=80
WEB_2_PORT=8001
Run Code Online (Sandbox Code Playgroud)

然后在docker-compose.yml

version: '3.8'

x-common-variables: &shared_envvars
  FLASK_ENV: development
  FLASK_APP: main.py
  FLASK_RUN_HOST: 0.0.0.0
  COMPOSE_PROJECT_NAME: DOCKER_ECHOES

x-volumes: &com_volumes
  - .:/project          # maps the current directory, e.g. project root that is gitted, to /proj in the container so we can live-reload

services:
  web_1:
    env_file: .env
    build:
      dockerfile: dockerfile_flask
      context: .
    ports:
      - "${WEB_1_PORT}:${FLASK_RUN_PORT}"       # flask runs on 5000 (default). docker-compose --env-file .env up loads whatever env vars specified …
Run Code Online (Sandbox Code Playgroud)

environment-variables docker-compose

4
推荐指数
1
解决办法
4910
查看次数

Django 模板:使用 forloop.counter 作为列表的索引

在 django 模板中,我需要使用 forloop.counter0 来访问列表中的元素。例如:

{% for foo in bar %}
   <p>{{data[{{forloop.counter0}}]}}</p>

{%endfor%}
Run Code Online (Sandbox Code Playgroud)

该表示法不起作用 - 我猜“无法解析其余部分:[{{forloop.....]”

那么...我如何使用变量 forloop.counter0 作为另一个变量(数据)的索引,该变量是 django 模板中的列表?

编辑:为什么我认为我需要这样做......简短的故事是我有一个内联表单集。表单集(我们称之为“折扣”)很简单 - 描述(只是向用户显示的标签)和关联的折扣百分比。用户只需输入%即可。该表单集在客户表单中使用。使用 inlineformset_factory(客户,折扣,......)。还必须在该折扣表单中设置 2 个外键(对于正在创建的 Customer 实例,以及 MetaGroup,请参见下文)。但这些都是隐藏字段,而且很容易做到。

但是,该表单集中所需的表单数量由另一个表中的实例决定(我们将其称为“MetaGroup”)。例如,元组包含诸如椅子、桌子、沙发之类的条目。我的“折扣”内联表单集为用户提供了一种在每个元组上设置折扣百分比的方法。

因此,在模板中我这样做:

...

<tbody>
   <managmeent forms, error stuff here>
   {% for form in formset %} 
      <td>{{form.field.pourcent}}</td>
      
     
Run Code Online (Sandbox Code Playgroud)

这就是我需要访问数据的 forloop [fooloop.counter0]。数据是由我用来呈现该表/片段的包含提供的......

编辑:接受的答案是狭隘问题的解决方案 - 我可能不应该这样做。对于更广泛的问题(例如,为什么我认为我需要这样做),我最终使用了此处详细介绍的内容。

django templates

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