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-compose
从 wordpress
文件夹中应该可以工作。
不幸的是,当您从 wordpress
项目文件夹中 运行 命令 curl https://wordpress.org/latest.tar.gz | tar -xvzf -
时,它会在您的项目目录下创建另一个文件夹 wordpress
。您应该将该名称重命名为 code
.
您的 Dockerfile
和 docker-compose.yml
应该在您的 wordpress 目录中。 (你重命名的代码)
你的困惑
出于某种原因,您认为涉及代码目录。在您的 wordpress 中没有这样的目录,它 完全 正常。
让我们分解一下让您感到困惑的命令:
- 在
Dockerfile
中:
ADD . /code
此行的作用是将指示的目录(此处为 . )复制到指示的容器目录(此处为 /code)中。
它等同于一个cp
命令只是你从主机复制到容器。
- 在
docker-compose.yml
中:
volumes:
- .:/code
此命令将目录公开给容器。这里我们暴露了宿主目录。进入容器目录/code.
注意:如果您了解卷,您可能会意识到 Dockerfile 中的 ADD
指令是不必要的。
为什么它不起作用
您的 docker-compose.yml
和 Dockerfile
位于预期的工作目录之上。
所以当docker-compose执行时,将你当前目录的内容复制到容器的/code目录中。
因此,当 php 尝试在 /code 中执行时,它没有看到他期望的文件,因此出现“未找到”错误。
修复它
把你Dockerfile
和docker-compose.yml
复制到代码目录(你重命名的那个)。
或者修改Dockerfile
和docker-compose.yml
,使它们指向好的目录。
我一直在关注 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-compose
从 wordpress
文件夹中应该可以工作。
不幸的是,当您从 wordpress
项目文件夹中 运行 命令 curl https://wordpress.org/latest.tar.gz | tar -xvzf -
时,它会在您的项目目录下创建另一个文件夹 wordpress
。您应该将该名称重命名为 code
.
您的 Dockerfile
和 docker-compose.yml
应该在您的 wordpress 目录中。 (你重命名的代码)
你的困惑
出于某种原因,您认为涉及代码目录。在您的 wordpress 中没有这样的目录,它 完全 正常。
让我们分解一下让您感到困惑的命令:
- 在
Dockerfile
中:
ADD . /code
此行的作用是将指示的目录(此处为 . )复制到指示的容器目录(此处为 /code)中。
它等同于一个cp
命令只是你从主机复制到容器。
- 在
docker-compose.yml
中:
volumes:
- .:/code
此命令将目录公开给容器。这里我们暴露了宿主目录。进入容器目录/code.
注意:如果您了解卷,您可能会意识到 Dockerfile 中的 ADD
指令是不必要的。
为什么它不起作用
您的 docker-compose.yml
和 Dockerfile
位于预期的工作目录之上。
所以当docker-compose执行时,将你当前目录的内容复制到容器的/code目录中。
因此,当 php 尝试在 /code 中执行时,它没有看到他期望的文件,因此出现“未找到”错误。
修复它
把你Dockerfile
和docker-compose.yml
复制到代码目录(你重命名的那个)。
或者修改Dockerfile
和docker-compose.yml
,使它们指向好的目录。