我正在尝试在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文件。
答案 0 :(得分:3)
尝试将撰写command
语句更改为以下内容 -
command: bash -c "npm install && npm run dev"
PS - 使用示例package.json
进行测试,当我们使用bash -c ""
&不是sh -c ""
(默认撰写命令运行),但不确定原因。希望它对你有所帮助。