首页 > 解决方案 > 使用 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 文件的示例,或者给我一个提示我的问题的提示,将不胜感激。

标签: phpdockerapachedocker-composecontainers

解决方案


推荐阅读