【问题标题】:npm install and run dev for laravel / vue on Docker container startnpm install and run dev for laravel / vue on Docker container start
【发布时间】:2018-07-07 10:26:35
【问题描述】:

我正在尝试在 Docker 的 Laravel 应用程序中自动安装和编译 JavaScript/Vue 文件和依赖项。这是一个签署留言簿的简单应用程序。

我已经编译了一个 php:7.1.12-fpm 容器,其中包含所有必需的 PHP 依赖项以及 Node 8.x 包。当 PHP 容器启动时,如果我从容器的 shell 访问它,npm 5.6.0 就可用。现在我必须进入这个容器并手动运行“npm install”和“npm run dev”来安装 JavaScript 依赖项并编译 Vue 文件。

我希望在 docker-compose 命令开始时发生这种情况。为此,我尝试添加一个 Node 容器并让它执行这两个命令。这是 Node 容器的 docker-compose.xml:

node:
    image: "node:8"
    user: "node"
    working_dir: /home/node/app
    environment:
      - NODE_ENV=production
    volumes:
      - ./web:/home/node/app
    expose:
      - "8081"
    command: npm install && npm run dev

不幸的是,使用上述 docker-compose.xml 为 Node 容器运行会导致此错误:

node_1     | npm ERR! code EINVALIDTAGNAME
node_1     | npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.
node_1     |
node_1     | npm ERR! A complete log of this run can be found in:
node_1     | npm ERR!     /home/node/.npm/_logs/2018-01-28T16_43_49_599Z-debug.log
laravelvuejsguestbook_node_1 exited with code 1

我怀疑我必须以某种方式逃避 && 但我不确定如何实现这一点。

对于需要做什么以便 npm 在启动 docker-compose 命令时安装依赖项并编译 Vue 文件,我将不胜感激。

【问题讨论】:

  • 你能分享你的 docker-compose.yml 和 dockerfile 吗?

标签: laravel shell docker npm docker-compose


【解决方案1】:

尝试将您的 compose command 语句更改为以下内容 -

command: bash -c "npm install && npm run dev"

PS - 使用示例package.json 进行测试,当我们使用bash -c "" 而不是sh -c ""(默认撰写命令运行)时,它可以工作,但不确定确切原因。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2019-02-10
    • 2021-07-18
    • 2018-07-16
    • 2022-01-15
    • 1970-01-01
    • 2018-02-26
    • 2020-11-25
    • 2019-04-11
    • 2021-03-25
    相关资源
    最近更新 更多