You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose中如何让artisan服务访问node环境?

解决Docker中Laravel Artisan调用Node.js失败的问题

你的问题核心是artisan服务基于PHP镜像构建,镜像内未安装Node.js环境,所以执行inertia:start-ssr这类需要调用node的命令时会报错。下面给你两个实用的解决方法:

方法一:给PHP镜像添加Node.js环境

因为artisan服务和php服务共用同一个Dockerfile(php.dockerfile),直接在这个文件里添加Node.js的安装步骤即可:

1. 修改dockerfiles/php.dockerfile

根据你的PHP镜像基础系统,添加对应安装命令:

  • 如果是Alpine系统(常见于轻量PHP镜像):
# 在合适位置添加Node.js安装命令
RUN apk add --no-cache nodejs npm
  • 如果是Debian/Ubuntu系统:
# 在合适位置添加Node.js安装命令
RUN apt-get update && apt-get install -y nodejs npm && rm -rf /var/lib/apt/lists/*

2. 重新构建镜像并运行命令

执行以下命令更新镜像:

docker compose build php artisan

之后再运行你的SSR命令就正常了:

docker compose run --rm artisan inertia:start-ssr

方法二:单独创建SSR服务(推荐)

Inertia的SSR本质是通过Node.js运行脚本,没必要通过Artisan中转。直接在docker-compose.yml里新增一个专门的SSR服务:

services:
  # ... 保留原有其他服务 ...
  ssr:
    image: node:current-alpine
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    command: node bootstrap/ssr/ssr.mjs
    networks:
      - laravel
    depends_on:
      - php

然后启动SSR服务:

docker compose up -d ssr

这个方法更符合Docker"单服务单职责"的设计原则,也避免了给PHP镜像额外安装Node.js的冗余。

内容的提问来源于stack exchange,提问作者mamady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:14:55