我一直在搜索网络和阅读手册,但似乎无法理解我的Docker设置出了什么问题。
目标是将Apache、PHP和MySQL容器化,使它们能够根据每个项目进行自定义。部署堆栈的唯一依赖应该是docker。所有其他依赖项/操作都应该能够通过Dockerfile构建/运行。
从我的Apache + MySQL + PHP堆栈通过docker-compose.yml文件 - 我想要将一个index.php页面定位到成功呈现Hello Docker!以及所有可用数据库列表。
问题在于,当我在浏览器中访问docker.dev/index.php时,除了查看PHP源代码外,无法运行PHP代码。这是我看到的内容:
我的理解(可能有误)是Apache正确处理虚拟主机,但不知道如何通过Apache PHP模块加载PHP文件。
我已经设置了Apache依赖于PHP,并通过网络将它们连接起来(还有MySQL),但显然我漏掉了某些东西,否则一切都应该按照我的意愿工作。
我在github上创建了一个仓库,可以通过几个简单的命令测试我的设置。
你还需要在你的主机上的hosts文件中添加docker.dev到127.0.0.1。
当我访问docker.dev/index.php时,如何呈现PHP而不是查看源代码?
如果可能的话,我不想使用PHP和Apache组合镜像。 我想要三个单独的容器 - PHP,Apache,MySQL。
目标是将Apache、PHP和MySQL容器化,使它们能够根据每个项目进行自定义。部署堆栈的唯一依赖应该是docker。所有其他依赖项/操作都应该能够通过Dockerfile构建/运行。
从我的Apache + MySQL + PHP堆栈通过docker-compose.yml文件 - 我想要将一个index.php页面定位到成功呈现Hello Docker!以及所有可用数据库列表。
问题在于,当我在浏览器中访问docker.dev/index.php时,除了查看PHP源代码外,无法运行PHP代码。这是我看到的内容:
<?php
/**
* This file:
* Has not been tested
* Does not use prepared statements
* Is for Proof of Concept only!
*/
$host = '127.0.0.1';
$user = 'root';
$pass = 'docker';
$conn = new mysqli($host, $user, $pass);
$sql = 'show databases';
$results = $conn->query($sql);
?>
<h1>Hello Docker!</h1>
<ul>
<?php while ($row = $results->fetch_assoc()) : ?>
<li><?= $row['Database'] ?></li>
<?php endwhile ?>
</ul>
我的理解(可能有误)是Apache正确处理虚拟主机,但不知道如何通过Apache PHP模块加载PHP文件。
我已经设置了Apache依赖于PHP,并通过网络将它们连接起来(还有MySQL),但显然我漏掉了某些东西,否则一切都应该按照我的意愿工作。
我在github上创建了一个仓库,可以通过几个简单的命令测试我的设置。
git clone https://github.com/dambrogia/docker-testing.git
cd docker-testing
docker-compose up -d
你还需要在你的主机上的hosts文件中添加docker.dev到127.0.0.1。
当我访问docker.dev/index.php时,如何呈现PHP而不是查看源代码?
如果可能的话,我不想使用PHP和Apache组合镜像。 我想要三个单独的容器 - PHP,Apache,MySQL。