首页 > 解决方案 > DOCKER:运行 gulp-php 网站时出错

问题描述

我正在尝试使用 Docker 来运行我的 php - gulp 网站。这是我创建的树:

├── app <--------------------contains the php files
├── blog-theme
├── bower_components
├── changelog-YYYY-MM-DD.md
├── dist
├── Dockerfile <-----------------------DOCKERFILE
├── get-git-log.sh
├── git-log.txt
├── gulpfile.js <------------------all my gulp tasks are here 
├── node_modules
├── package.json
├── package-lock.json
├── README.md
├── Releases
├── ressources
├── website_test.sh
└── yarn.lock

app 文件夹包含我所有的 php 文件:

app
├── folder1
│   └── index.php
├── folder2
│   └── index.php
├── folder3
│   └── index.php
├── footer.php
├── header.php
└── index.php

我的 gulpfile.js 包含编译和构建我的网站的所有任务。它运作良好。我用来运行的命令是gulp build-production && gulp serve:dist由于我创建的任务的名称。

所以在我的 Dockerfile 中,我添加了以下几行,以使我的应用程序在我的 Docker 中运行:

FROM ubuntu:16.04

WORKDIR /app

RUN apt-get update
RUN apt-get install -y build-essential
RUN apt-get update && apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get update && apt-get install -y nodejs
RUN npm install -g npm
RUN npm install -g n
RUN n 13.6.0
RUN npm i gulp@4.0.2
RUN npm i gulp-cli

VOLUME ["/app"]
CMD ["gulp build-production && gulp serve:dist"]

当我运行时,docker build -t myapp .所有步骤都运行良好,没有返回任何错误。

但是当我运行时,docker run myapp我收到以下错误:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"gulp build-production && gulp serve:dist\": executable file not found in $PATH": unknown.
ERRO[0001] error waiting for container: context canceled 

我很困惑,所以如果有人有解决方案,那就太棒了。

标签: phpdockergulp

解决方案


首先,您应该使用节点映像而不是 ubuntu,因为这样您以后不需要重新安装它。

我认为您的主要问题是您应该首先创建应用程序目录并复制所有网站内容。

然后你也可以删除VOLUME这在你的情况下没用。

你可以尝试的东西:

FROM node:14

RUN mkdir /app
WORKDIR /app

COPY . /app
RUN apt update
RUN apt install -y php
RUN npm install -g n
RUN n 13.6.0
RUN npm i -g gulp-cli
RUN npm install

ENV PATH=$PATH:/app/node_modules/.bin
ENTRYPOINT [] # to bypass default node
CMD gulp serve:dist

推荐阅读