如何使用网站和php运行Docker容器?

如何使用网站和php运行Docker容器?,php,docker,nginx,Php,Docker,Nginx,我有一个登录页和一个PHP文件来发送电子邮件(反馈表)。我想用Docker测试这个表单 我写了这个Dockerfile: FROM php:7.4-cli COPY . /usr/src/app CMD [ "php", "/mail/contact_me.php"] 但这对我不起作用 我有一个目录mail,其中PHP文件位于项目的根目录中,但我仍然不确定Dockerfile是否正确: 从php:7.4-cli继承就足够了吗?还是必须添加nginx服务器才能运行映像 行复制什么/usr/sr

我有一个登录页和一个PHP文件来发送电子邮件(反馈表)。我想用Docker测试这个表单

我写了这个Dockerfile:

FROM php:7.4-cli
COPY . /usr/src/app
CMD [ "php", "/mail/contact_me.php"]
但这对我不起作用

我有一个目录
mail
,其中PHP文件位于项目的根目录中,但我仍然不确定Dockerfile是否正确:

  • 从php:7.4-cli继承
    就足够了吗?还是必须添加nginx服务器才能运行映像
  • 复制什么/usr/src/app
    你到底要做什么?这是正确的吗

阅读Dockerfile(官方文档):


可能您需要另一个Docker映像:

当您想要创建自定义映像时,将使用
Dockerfile

php:7.4-cli中的
指定要自定义的基本映像。
复制/usr/src/app
主机当前目录
复制到容器中
/usr/src/app

CMD[“php”,“/mail/contact_me.php”]
指定要在容器中运行的命令

在您的情况下,我认为不需要自定义图像

由于您需要一个带有PHP的Web服务器,您可以使用预先安装的
PHP7
apache
Web服务器附带的
PHP:7.4.3-apache
图像。您只需将应用程序复制到容器中,或使用卷即可。卷非常好,因为它实际上将主机目录装载到容器中,允许您从主机编辑应用程序并实时查看更改

您可以使用
docker compose.yml
文件来实现这一点

version: "2"
services:
  webserver:
    image: php:7.4.3-apache
    ports:
      - "8181:80"
    volumes:
      - ./app:/var/www/html
假设您的应用程序位于主机上的
app
文件夹中,此文件夹将装载在容器上的
/var/html/html
处。此处,
8181:80
将主机上的
8181
端口重定向到容器的
80
端口,即http端口

使用此命令启动容器:

docker-compose up -d

您应该可以在
http://localhost:8181

您需要一个Nginx Web服务器和php容器。请您在回答时写下Dockerfile的外观,好吗?谢谢@invalidbotI为了更好的理解和可读性,我编辑了你的问题。因此,我重新组织了您的文本,将更多的精力放在您的问题上(您的每个问题现在都是结尾的一个要点,而不是代码段中的一个要点)。如果您可以包含您收到的错误消息,那也很好。请阅读并编辑您的问题,并从中提出建议。因此“/app:”我的文件夹是项目的吗?例如,我的项目是包含所有代码的“myproject”文件夹。所以我必须写“/myproject:/var/www/html”?我已经在本地主机上:8181:禁止您没有访问此资源的权限。本地主机端口8181上的Apache/2.4.38(Debian)服务器是根据我发布的代码组织文件的方式。然后,您可以通过localhost:8181/index.php访问您的应用程序