首页 > 解决方案 > 在 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。

我只想要一个容器来构建我的资产,我做对了吗?:

https://laravel.com/docs/5.6/mix#running-mix

标签: node.jslaraveldockernpm

解决方案


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


推荐阅读