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

and*_*w17 4 php nginx docker

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

我写了这个 Dockerfile:

FROM php:7.4-cli
COPY . /usr/src/app
CMD [ "php", "/mail/contact_me.php"]
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用。

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

  • 继承就足够了FROM php:7.4-cli还是必须添加nginx服务器才能运行映像?
  • 线COPY . /usr/src/app到底有什么作用?这样对吗?

Req*_*ven 12

Dockerfile当您要创建自定义图像时使用A。

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

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

当你需要用PHP Web服务器,则可以使用php:7.4.3-apache其自带的图像PHP7ApacheWeb服务器预装。您需要做的就是将您的应用复制到您的容器中,或者使用一个卷。卷很棒,因为它实际上将您的主机目录挂载到您的容器中,允许您从主机编辑您的应用程序并实时查看更改。

您可以docker-compose.yml为此使用文件。

version: "2"
services:
  webserver:
    image: php:7.4.3-apache
    ports:
      - "8181:80"
    volumes:
      - ./app:/var/www/html
Run Code Online (Sandbox Code Playgroud)

假设您的应用程序位于app主机上的文件夹中,该文件夹将安装在/var/html/html您的容器上。这里8181:80会将8181主机上的80端口重定向到容器的端口,即 http 端口。

使用此命令启动您的容器:

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

您应该在以下位置看到您的着陆页 http://localhost:8181