如何通过网站和PHP运行Docker容器?

时间:2020-02-25 15:57:37

标签: php docker nginx

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

我已经编写了这个Dockerfile:

FROM php:7.4-cli
COPY . /usr/src/app
CMD [ "php", "/mail/contact_me.php"]

但这对我不起作用。

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

  • 继承FROM php:7.4-cli是否足够?还是必须添加nginx服务器来运行图像?
  • COPY . /usr/src/app行到底是做什么的?这是正确的吗?

2 个答案:

答案 0 :(得分:4)

要创建自定义图像时使用Dockerfile

FROM php:7.4-cli指定要自定义的基本图片
COPY . /usr/src/app主机当前目录.复制到容器 /usr/src/app
CMD [ "php", "/mail/contact_me.php"]指定在容器中运行什么命令。

对于您来说,我认为不需要自定义图片。

由于您需要使用PHP的网络服务器,因此可以使用预先安装了php:7.4.3-apachePHP7网络服务器的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看到登录页面

答案 1 :(得分:-1)

在此处了解有关Dockerfile的信息(官方文档):Best practices for writing Dockerfiles

然后 可能是您需要另一个Docker映像:Docker HUB ~> bitnami/php-fpme