Docker 编写 Wordpress 示例

Docker Compose Wordpress example

我一直在关注 Quickstart Guide: Compose and Wordpress,但无法让它发挥作用。

我觉得跟我的目录结构有关系。在 运行 完成所有步骤后,我有一个名为 wordpress 的子目录,但我认为我的所有代码都引用了一个名为 code 的子目录,所以我决定重命名我的 wordpress 目录 code。然后我重新 运行 docker-compose up 但不幸的是这也没有用。

更新: 通过 "can't get it to work" 当我输入加载网站 PHP 服务器 returns:

Not Found
The requested resource / was not found on this server

通过仔细查看该快速入门指南:Dockerfile 和撰写文件应该位于您一开始创建的 wordpress 项目文件夹中。而且在 wordpress 文件夹中应该有一个子文件夹 code。 运行 docker-composewordpress 文件夹中应该可以工作。

不幸的是,当您从 wordpress 项目文件夹中 运行 命令 curl https://wordpress.org/latest.tar.gz | tar -xvzf - 时,它会在您的项目目录下创建另一个文件夹 wordpress。您应该将该名称重命名为 code.

您的 Dockerfiledocker-compose.yml 应该在您的 wordpress 目录中。 (你重命名的代码)

你的困惑

出于某种原因,您认为涉及代码目录。在您的 wordpress 中没有这样的目录,它 完全 正常。

让我们分解一下让您感到困惑的命令:

  • Dockerfile中:

ADD . /code

此行的作用是将指示的目录(此处为 . )复制到指示的容器目录(此处为 /code)中。

它等同于一个cp命令只是你从主机复制到容器。

  • docker-compose.yml中:

volumes: - .:/code

此命令将目录公开给容器。这里我们暴露了宿主目录。进入容器目录/code.

注意:如果您了解卷,您可能会意识到 Dockerfile 中的 ADD 指令是不必要的。

为什么它不起作用

您的 docker-compose.ymlDockerfile 位于预期的工作目录之上。

所以当docker-compose执行时,将你当前目录的内容复制到容器的/code目录中。

因此,当 php 尝试在 /code 中执行时,它没有看到他期望的文件,因此出现“未找到”错误。

修复它

把你Dockerfiledocker-compose.yml复制到代码目录(你重命名的那个)。

或者修改Dockerfiledocker-compose.yml,使它们指向好的目录。