我是Dancer的新手,但我试图将其配置为在Docker容器中工作。结果,我需要从环境中获取数据库设置。

就我而言,我有DB_PORT_3306_TCP_ADDRDB_PORT_3306_TCP_PORT来自Docker。不幸的是,在我可以更改数据库以使用那些变量之前,Dancer::Plugin::Database模块正在出错。

use Dancer ':syntax';
use Dancer::Plugin::Database;

if ($ENV{DB_PORT_3306_TCP}) {## Connected via docker.
    database->({
        driver => 'mysql',
        username => 'username',
        password => 'password',
        host => $ENV{DB_PORT_3306_TCP_ADDR},
        port => $ENV{DB_PORT_3306_TCP_PORT},
        database => $ENV{DB_ENV_MYSQL_DATABASE},
    });
}

因此,问题是,是否有一种很好的方法通过环境变量而不是通过静态YAML配置Dancer?

最佳答案

请参阅Dancer::Plugin::Database文档中的Runtime Configuration:

您正在添加->,这会导致错误。以下应该工作:

use Dancer ':syntax';
use Dancer::Plugin::Database;

if ($ENV{DB_PORT_3306_TCP}) {## Connected via docker.
    database({
        driver => 'mysql',
        username => 'username',
        password => 'password',
        host => $ENV{DB_PORT_3306_TCP_ADDR},
        port => $ENV{DB_PORT_3306_TCP_PORT},
        database => $ENV{DB_ENV_MYSQL_DATABASE},
    });
}

关于perl - 从环境变量配置Dancer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26766572/

10-15 09:19