如何为PHP和Node创建Docker映像?

uqjltbpv  于 5个月前  发布在  PHP
关注(0)|答案(2)|浏览(44)

我正在尝试为我的Angular应用程序创建一个Docker容器,其中包含一个PHP文件。Angular需要npm,所以我需要安装Node.js。我的项目不需要Apache,纯PHP就可以了。
我的理解是我应该有一个这样的docker-compose:

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

字符串
我不知道如何安装PHP在我的情况下,有人能给我指出正确的方向吗?非常感谢!

cnwbcb6i

cnwbcb6i1#

我认为在这种情况下,更好的方法是像下面这样一起使用node docker image和PHP docker image,而不是使用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

字符串
通过这种方式,您不需要在每次更改代码时安装Node或PHP包,并需要在Dockerfile中从头开始重建

**更新:**我最近注意到节点被重新定位到include路径中,至少在Alpine上看起来是这样的,这样你就可以用/usr/local/include/node替换/usr/local/lib/node用于alpine图像。

对于node:21-alpine,配置是这样的。

FROM node:21-alpine AS node
FROM php:8.3-fpm-alpine

RUN apk add --no-cache libstdc++ libgcc

COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=node /usr/local/include/node /usr/local/include/node
COPY --from=node /usr/local/share/man/man1/node.1 /usr/local/share/man/man1/node.1
COPY --from=node /usr/local/share/doc/node /usr/local/share/doc/node
COPY --from=node /usr/local/bin/node /usr/local/bin/node
COPY --from=node /opt/ /opt/
RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
RUN ln -s /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx
RUN ln -s /opt/yarn-$(ls /opt/ | grep yarn | sed 's/yarn-//')/bin/yarn /usr/local/bin/yarn
RUN ln -s /opt/yarn-$(ls /opt/ | grep yarn | sed 's/yarn-//')/bin/yarnpkg /usr/local/bin/yarnpkg

**注意:**您必须在Alpine上安装libstdc++libgcc软件包,以便节点正常工作。

$(ls /opt/ | grep yarn | sed 's/yarn-//')部分用于查找/opt/路径下的图像Yarn版本。

mzillmmw

mzillmmw2#

我建议你换一种方式,因为php比install长,所以使用php镜像和install节点。

FROM php:5.6-apache

RUN apt-get update && apt-get install -y nodejs npm
#WORKDIR is /var/www/html
COPY . /var/www/html/
RUN npm install

字符串
然后你有apache2提供的.php文件。

2021年更新

建议使用php:7.4-apache或更新版本。

相关问题