npm在Docker容器启动时为laravel / vue安装并运行dev

时间:2018-01-28 17:20:26

标签: laravel shell docker npm docker-compose

我正在尝试在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

不幸的是,使用上面的Nodeer-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文件。

1 个答案:

答案 0 :(得分:3)

尝试将撰写command语句更改为以下内容 -

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

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