我是Docker的新手。我正在Docker环境中开发一个PHP应用程序,我需要使用MySql Server /数据库来保存数据。下面的文档,我运行此命令来创建MySql服务器映像:
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))
},
它下载了它,但我也用它来犯这个错误:
错误:数据库未初始化且未指定密码选项您需要指定MYSQL_ROOT_PASSWORD,MYSQL_ALLOW_EMPTY_PASSWORD和MYSQL_RANDOM_ROOT_PASSWORD之一
如何设置MYSQL_ALLOW_EMPTY_PASSWORD选项?
然后我如何在这个图像上创建一个数据库,然后从我的PHP代码(在不同的图像上)读/写它?
答案 0 :(得分:9)
创建容器
运行此命令:docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=mysecretpw -v mysql:/var/lib/mysql -d mariadb:latest
这样,您将使用mariadb创建docker容器,并将数据存储在mysql文件夹中。在命令中,您有 -e MYSQL_ROOT_PASSWORD = my-secret-pw 。这会将您的root密码设置为 my-secret-pw 。当您连接到它时,您的用户是 root ,密码是 my-secret-pw 。
找出地址
docker inspect some-mariadb
- 使用此命令,您将找到有关容器的所有信息。你需要你的IP地址。
提示:docker inspect some-mariadb | grep IPAddress
您可以更轻松地找到您的IP地址。
<强>连接强>
现在,它是PHP的一部分。运行下面的PHP,但检查您的主机地址,在我的情况下是 172.17.0.2 (from PHP documentation。):
<?php
$link = mysqli_connect("172.17.0.2", "root", "my-secret-pw");
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
echo "Success: A proper connection to MySQL was made!" . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
mysqli_close($link);
如果工作正常,你会看到:
A proper connection to MySQL was made!
Host information: 172.17.0.2 via TCP/IP
Ps。:对于数据库创建,运行所需的命令,就像在没有docker的数据库中一样。它是相同的(CREATE DATABASE mydb
)。
这只是为了开始。我建议你学习docker compose。当你得到它时,你会学到很多关于docker优势的知识。