node.js - 在 Docker 容器中运行 Laravel Mix
问题描述
我的应用程序(Laravel)在 Docker 容器中运行。
我现在正在尝试使用 Laravel Mix 来编译我的资产。为此,我需要 node 和 npm,因此我尝试使用单独的容器来实现这一点。
我的 Dockerfile 只有这个:
FROM node:8
我的码头工人撰写:
mix:
build:
context: ./docker/mix
args:
- DOCKER_ENV=${DOCKER_ENV}
container_name: mix
volumes:
- ${PROJECT_PATH}/src:/srv/app
environment:
- DOCKER_ENV=${DOCKER_ENV}
- APP_DEBUG=${APP_DEBUG}
当我尝试构建时,我不断从该容器中获取退出代码 0。
我只想要一个容器来构建我的资产,我做对了吗?:
解决方案
尝试在 docker 节点映像中运行 laravel mix 时,我们遇到了同样的问题。映像停止运行或无法安装 node_modules。
经过一番挖掘,我们找到了使用入口点的解决方案,这可以用来覆盖 docker 镜像的默认运行命令。
我们创建了一个入口点,它在 docker-compose up -d 上调用 npm run watch-poll,入口点文件如下所示:
#file:docker/init-scripts/node_start.sh
#!/bin/sh
set -e
echo 'running prestart node script'
echo 'running npm install'
npm install
echo 'initialization done, start watching'
npm run watch-poll
然后在 docker-compose.yml 中调用它,如下所示:
node:
image: node:10-alpine
container_name: node
working_dir: /usr/src/app
volumes:
- ./htdocs:/usr/src/app
- ./docker/init-scripts/:/init-scripts/
entrypoint:
- /init-scripts/node_start.sh
depends_on:
- 'app'
我们将整个解决方案放在 github 上,在这里可以找到:https ://github.com/jva91/docker-laravel-mix
推荐阅读
- powershell - 在表单上显示 Outlook 日历?
- python - 获取csv文件中两个值之间的时间差
- c++ - 链接器可以区分模板函数和非模板函数吗?
- mysql - 按特定顺序对数据进行排序(mysql)
- octave - 如何在 Octave 中获取包含目录内容的数组?
- sql - ODBC 对象连接问题 - 对 65k 行的开放限制
- c# - 通过一个数据库请求获取所有数据作为列表
- c++ - 如何解决由于字符串到 json 转换而产生的异常?
- oracle - 选择查询联接或分组依据
- c# - .Net Core 控制台应用程序中 DbContext 的依赖注入:在前一个操作完成之前在此上下文上启动了第二个操作