当前位置: 首页 > 知识库问答 >
问题:

链接python应用程序docker和postgress docker

谷梁嘉悦
2023-03-14

我有两个docker容器,它们通过以下命令运行:

>

  • docker run——name postgres-v“/Users/xxx/Desktop/Coding/DockerMounting”:/home/-e postgres_PASSWORD=xyz-d postgres

    docker run-it-v“/Users/xxx/Desktop/Coding/DockerMounting”:/home/t-p5000:5000——说出一些应用——链接postgres:postgres-dxxx/ubuntu:latest

    我已经在我的postgres(psql)容器中创建了必要的用户、数据库和表。

    我正在尝试运行python脚本:

    import os
    
    from sqlalchemy import create_engine
    from sqlalchemy.orm import scoped_session, sessionmaker
    
    engine = create_engine(os.getenv("DATABASE_URL"))
    db = scoped_session(sessionmaker(bind=engine))
    
    def main():
        flights = db.execute("SELECT origin, destination, duration FROM flights").fetchall()
        for flight in flights:
            print(f"{flight.origin} to {flight.destination}, {flight.duration} minutes.")
    
    if __name__ == "__main__":
        main()
    

    我得到以下错误:

      File "list.py", line 6, in <module>
        engine = create_engine(os.getenv("DATABASE_URL"))
      File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/__init__.py", line 435, in create_engine
        return strategy.create(*args, **kwargs)
      File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/strategies.py", line 56, in create
        plugins = u._instantiate_plugins(kwargs)
    

    我知道一个问题是我需要设置DATABASE_URL env,但我不确定该值是多少

  • 共有2个答案

    阎辰钊
    2023-03-14

    您需要在运行烧瓶应用程序的相同环境中指定DATABASE_URL。

    这意味着如果你在windows中从CMD运行它,你需要在运行烧瓶之前导出它:

    setx DATABASE_URL "postgres://<user>:<password>@<host>:<port>/<DBname>"
    

    或者在linux中:

    export DATABASE_URL=postgres://<user>:<password>@<host>:<port>/<DBname>
    

    (端口通常为5432)

    然后运行应用程序。

    昌和悦
    2023-03-14

    根据文档,DATABASE\u URL环境变量应该是这样的:postgresql://postgres:xyz@博士后:5432/博士后

     类似资料:
    • 我有一个Spring Boot应用程序与以下配置: 我希望与docker compose一起运行(docker 1.11.2,docker compose 1.7.1): 不幸的是,这不起作用,我得到:com。埃克维德。领事运输例外:java。网ConnectException:连接被拒绝。 我完全不知道为什么它不能连接到Consul,因为我可以通过这种方式连接到其他系统,例如其他应用程序中的Ra

    • 问题内容: 我试图在两个单独的Docker容器上将我的Scala-Akka应用程序与MySQL数据库一起使用。我发现Docker允许开发人员使用名为– link的标志将其应用程序链接到其数据库。在我用来创建映像的Dockerfile中,向其中添加了EXPOSE 3306 8080。 这就是我运行容器的方式: 运行容器后,我使用了docker ps,并且能够看到活动的容器。但是,似乎应用程序容器没有

    • 我正在尝试使用领事作为发现服务,和另外两个Spring启动应用程序注册与领事;把它们放进码头; 以下是我的代码:app: 除了spring boot application.yml和docker-compose.yml之外,下面是app的Dockerfile 开始的时候.sh

    • 我在我的应用程序中启用了应用链接。它工作正常。但是在我的应用程序中,有一些情况下我无法处理传入的网址。在这种情况下,我想将该网址重定向到设备中的默认浏览器。 目前,我尝试使用intent打开带有url的浏览器,但它再次重定向到我的应用程序本身。应用程序链接的格式如下- 所以根据params,我想要么在应用程序本身中处理应用程序链接,要么将其重定向到默认浏览器。下面是我试图用上面的网址打开浏览器的代

    • 演示网站:http://recipe-app.com/recipe/grilled-potato-salad演示应用:http://search-codelabs.appspot.com/codelabs/android-deep-linking 我的测试: 我已经从上面的链接安装了演示应用程序。我用谷歌搜索应用程序搜索了“烤土豆沙拉”,结果发现http://recipe-app.com/reci

    • 我是码头工人的新手。我用的是Spring boot微服务。它在我的本地机器上运行良好。现在,我需要为我的应用程序创建一个docker图像。它依赖于Mysql服务器。我使用docker-compose来创建我的容器。在运行我的自定义映像(spring boot应用程序)时,我收到一个通信链接失败错误。Mysql镜像独立运行良好。 我的 yml 文件 : 应用程序属性文件 : 完整的错误消息: spr