小编Jos*_*ong的帖子

如何创建docker-compose版本2以使用卷拥有持久的postgres数据库?

我知道使用较旧版本的docker-compose,我们可以创建另一个只包含数据卷的容器,并使用volumes_from链接它以使其成为"仅数据容器".但是,我想测试使用新语法.

version: '2'
services:
    app:
        build: .
        links:
            - psql
    psql:
        image: postgres
        volumes_from:
            - psqldata
        ports:
            - "5432:5432"
    psqldata:
        image: postgres
        volumes:
            - psqlvolumes:/var/lib/postgresql/data/

volumes:
    psqlvolumes:
        driver: local
Run Code Online (Sandbox Code Playgroud)

这是基于这篇文章.

我有另一个脚本运行,等待这个postgres容器在其他容器运行之前启动,例如:

container:
    build: .
    volumes:
        - ./scripts/wait-for-postgres.sh:/code/wait-for-postgres.sh
    entrypoint: ./wait-for-postgres.sh "command"
Run Code Online (Sandbox Code Playgroud)

脚本看起来像:

#!/bin/bash

set -e
export PGPASSWORD=postgres
cmd="$@"

until psql -h "postgres" -U "postgres" -c '\l'; do
  >&2 echo "Postgres is unavailable - sleeping"
  sleep 1
done

>&2 echo "Postgres is up - executing command"
exec $cmd
Run Code Online (Sandbox Code Playgroud)

这是从码头网站上获取的.

这只会导致容器停滞而根本不会出现,我甚至无法使用我需要的表来初始化postgres容器.

postgresql docker docker-compose

6
推荐指数
1
解决办法
5989
查看次数

在 argparse 中使用 Python 的 add_argument 时,如果调用特定的已弃用标志,如何抛出异常?

基本上想象我有一个有多个参数的argparser。我有一个特定的函数定义,如下所示:

    def add_to_parser(self, parser):
        group = parser.add_argument_group('')
        group.add_argument( '--deprecateThis', action='throw exception', help='Stop using this. this is deprecated')
Run Code Online (Sandbox Code Playgroud)

无论我是否可以尝试创建该操作来引发异常并停止代码,或者是否可以包装它以检查标志deprecateThis然后引发异常,我想知道如何做到这一点以及哪一个最好!谢谢。

python parsing action exception argparse

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