我的 Docker.env文件有问题。当我在我的 Docker 文件夹中(我有docker-compose.yml和.env文件的地方)时,环境变量可以正常读取.env。但是,当我docker-compose -f ./docker/docker-compose.yml up --build -d在更高级别的目录中运行时,会收到如下警告:
The MYSQL_ROOT_PASSWORD variable is not set. Defaulting to a blank string.
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题?我尝试设置env_file属性docker-compose.yml并使用其他文件编码(我在 Google 中找到了这个解决方案),但仍然没有。
这是我的配置:
version: '2'
services:
mysql:
container_name: mysql
image: mysql
volumes:
- "./.data/db:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
Run Code Online (Sandbox Code Playgroud)
.env 文件:
# MySQL
MYSQL_ROOT_PASSWORD=test
MYSQL_DATABASE=test
MYSQL_USER=test
MYSQL_PASSWORD=test
Run Code Online (Sandbox Code Playgroud) 我需要测试我的控制器操作,我需要建议。这是我的控制器的外观:
class SampleController extends Controller
{
public function sampleAction(Request $request)
{
$lang = 'en';
return $this->render('movie.html.twig', [
'icons' => $this->container->getParameter('icons'),
'language' => $lang,
'extraServiceUrl' => $this->getAccount()->getExtraServiceUrl(),
'websiteUrl' => $this->getAccount()->getWebsiteUrl(),
'myProfileUrl' => $this->getAccount()->getMyProfileUrl(),
'redirectForAnonUser' => $this->container->get('router')->generate('login'),
'containerId' => $request->getSession()->get("_website"),
'isRestricted' => $this->getLicense()->isRestricted(),
'isPremiumAvaible' => $this->getLicense()->isPremiumAvaible()
]);
}
private function getAccount()
{
return $this->container->get('context')->getAccount();
}
private function getLicense()
{
return $this->container->get('license');
}
}
Run Code Online (Sandbox Code Playgroud)
现在,通常我通过 behat 测试控制器,但这个只是渲染树枝并设置变量,所以我可能无法通过 behat 测试它。我试图通过 phpUnit 测试它并且它可以工作,但是模拟链方法的最佳方法是什么?或者也许你有其他方法来测试它?顺便说一句,容器是私有的,所以我需要反思?你好