【问题标题】:Docker compose database url environment variable for flask appDocker 为烧瓶应用程序编写数据库 url 环境变量
【发布时间】:2018-10-06 04:31:42
【问题描述】:

尝试使用 docker-compose.yml 而不是像这样单独启动容器:

docker container run --name mysql -d -e MYSQL_RANDOM_ROOT_PASSWORD=yes -e MYSQL_DATABASE=currency -e MYSQL_USER=currency -e MYSQL_PASSWORD=currency mysql/mysql-server:5.7


docker run --name currency -d -p 8000:5000 --rm --link mysql:dbserver -e DATABASE_URL=mysql+pymysql://currency:currency@dbserver/currency currency:latest

单独运行时,flask 应用会正确找到 DATABASE_URL 并使用 mysql db。

我使用的 docker-compose.yml 文件如下:

version: "2"
services:
    mysql:
        image: mysql/mysql-server:5.7
        environment:
            - MYSQL_RANDOM_ROOT_PASSWORD:yes
            - MYSQL_DATABASE:currency
            - MYSQL_USER:currency
            - MYSQL_PASSWORD:currency
    currency:
        build: .
        links:
            - "mysql:dbserver"
        ports:
            - "8000:5000"
        environment:
            - DATABASE_URL:"mysql+pymysql://currency:currency@dbserver/currency"

当我使用 docker-compose.yml 时,它没有使用 mysql 数据库。我相信对于 docker-compose.yml 中的一些错误,烧瓶应用程序无法看到环境变量“DATABASE_URL”。 docker-compose.yml 出了什么问题?

【问题讨论】:

    标签: mysql docker flask environment-variables


    【解决方案1】:

    首先:确保使用links

    --link 标志是 Docker 的遗留功能。它最终可能会被删除。除非您绝对需要继续使用它,否则我们建议您使用 user-defined networks 来促进两个容器之间的通信,而不是使用 --link
    用户定义的网络不支持您可以使用 --link 执行的一项功能是在容器之间共享环境变量。但是,您可以使用卷等其他机制以更可控的方式在容器之间共享环境变量。

    其次,执行docker exec -it currency bash在您的货币容器中打开一个会话,并在其中执行echo "DATABASE_URL='${DATABASE_URL}'",以检查环境变量是否已设置。

    最后,检查您的情况是否是订购问题(货币开始数据库完全启动之前)

    见“Control startup order in Compose”。
    例如:

    version: "2"
    services:
      web:
        build: .
        ports:
          - "80:8000"
        depends_on:
          - "db"
        command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
      db:
        image: postgres
    

    【讨论】:

      猜你喜欢
      • 2016-03-09
      • 2021-05-03
      • 2015-04-04
      • 2021-01-23
      • 2019-10-25
      • 2019-09-06
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多