php - 使用 php、apache 和本机 DB 设置 Docker 应用程序的问题
问题描述
我需要构建一个仅使用 php 和 apache 作为容器的 docker 应用程序来运行基于 php 的 Web 应用程序。我只使用可以在特定 UI 中激活的 Docker Compose YAML 文件 - 我不使用所有命令行的东西(它是一个 NAS,带有经过修改的基于 Linux 的操作系统,我通常避免在命令行级别进行任何活动) .
php 和 apache 的镜像都应该基于最新版本,并且确保相互通信。要使用的数据库应该是机器的原生 MariaDB。
我一直在尝试 Docker Compose YAML 文件的数十种变体,但到目前为止,即使在基本操作中也没有一个可以工作:
version: "3.1"
services:
php:
image: php:latest
working_dir: /root
volumes:
- /share/Web/myWebApp:/root
command: docker-php-ext-install pdo pdo_mysql
links:
- "web"
web:
image: httpd:latest
volumes:
- /share/Web/myWebApp:/usr/local/apache/htdocs
ports:
- 9500:80
- 9501:443
使用上面的 YAML 文件,开始创建应用程序,以及 php-command
command: docker-php-ext-install pdo pdo_mysql
导致 php 出现更长的输出,但一旦完成,php 容器会立即停止。当我省略这个命令时,容器甚至根本不会启动。我不确定
working_dir
php的指令也是如此。这完全需要吗?如果是这样,它必须是什么,内部卷或映射到主机卷(如上所述)?
然而,apache Webserver-container 可以通过主机 URL:9500 启动并启动,显示“It works”,但它忽略了映射
/share/Web/myWebApp:/usr/local/apache/htdocs
我已经指定了。它只显示 apache 提供的静态 INDEX.HTML 文件。当我进入正在运行的 apache 容器(通过命令行)时,我可以移动到目录
/usr/local/apache/htdocs
这实际上包含了我的 Web 应用程序的所有 HTML 和 PHP 文件,但是当我在浏览器中启动 URL:PORT 时,只显示修复 INDEX.HTML。
这一定是一百万次的问题,因为这是一个非常基本的设置,但我没有让它工作。我也对 Docker Compose 的网络说明感到困惑。该文件说,使用
links
已弃用,但无论如何都不需要,因为容器可以在同一个 Docker 网络中本机地相互通信。反而
networks
应该使用它,但我很困惑我是否需要它?
如果有人可能有一个可以完成这项工作的基本 YAM 文件的示例,或者给我一个提示我的问题的提示,将不胜感激。
解决方案
推荐阅读
- java - 从二维数组列表读取和写入数据的问题
- c# - 在 C# 程序中编译和执行 C++ 代码
- nativescript - 如何在 NativeScript 项目中使用自定义 Swift 框架?
- javascript - HTML webpack插件没有将脚本注入模板
- mysql - 如何在 Rails 上查询日文活动记录?
- flutter - “?。” Dart 或其他语言的符号
- r - 为 xts 使用错误的时间自动绘图
- python - 如何在python中删除字符串的特定部分
- plot - gnuplot 不允许绘制简单的文件说下一个大小无效
- python - 仅使用 Django 2.2 ORM