如何为php和node创建docker镜像?

Jwq*_*wqq 2 php node.js docker

我正在尝试为我的angular创建一个docker容器,其中包含php文件。Angular需要npm,所以我需要安装nodejs。我不需要为我的项目使用Apache,只需纯PHP即可正常工作。

我的理解是我应该有一个

FROM node:latest

..install php here

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app
RUN npm install

COPY . /usr/src/app
Run Code Online (Sandbox Code Playgroud)

我不确定如何安装php,有人可以指出正确的方向吗?非常感谢!

adn*_*ady 10

我认为在这种情况下,更好的方法是将节点 docker 镜像和 PHP docker 镜像一起使用,如下所示,而不是通过使用安装其中之一 apt-get install

FROM node:latest AS node
FROM php:7.4-fpm

COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=node /usr/local/bin/node /usr/local/bin/node
RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app
RUN npm install

COPY . /usr/src/app
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您无需在每次更改代码时都安装 node 或 PHP 包,并且在 Dockerfile 中需要从头开始重建

  • 这会导致: /bin/sh: 87: node: not found 当尝试运行 node 时,或在: /usr/bin/env: 'node': No such file or directory 当尝试运行 npm 时。这里似乎缺少了一些东西。 (6认同)

Ger*_*man 5

我建议您以其他方式进行操作。由于php比安装更长,因此请使用php映像并安装节点。

FROM php:5.6-apache

RUN apt-get update && apt-get install -y node npm
#WORKDIR is /var/www/html
COPY . /var/www/html/
RUN npm install
Run Code Online (Sandbox Code Playgroud)

然后,您有apache2提供的.php文件。