【发布时间】: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