【问题标题】:Run Laravel Mix in Docker Container在 Docker 容器中运行 Laravel Mix
【发布时间】:2018-12-05 06:25:23
【问题描述】:

我的应用程序 (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.js laravel docker npm


    【解决方案1】:

    您需要一个正在运行的进程才能使容器保持活动状态。一种常见的方法是连续运行 shell 脚本或命令。尝试将其添加到 dockerfile 的末尾:

    CMD ["tail", "-f", "/dev/null"]
    

    【讨论】:

    • 这是工作,我现在可以 SSH 并运行 npm run dev 但我得到``` 错误:找不到模块 '../' ```
    【解决方案2】:

    我们在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-04
      • 2015-03-05
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2015-06-13
      • 2021-12-03
      • 2015-01-19
      相关资源
      最近更新 更多