DOCKER: 运行 gulp-php 网站时出错
DOCKER: error when running gulp-php website
我正在尝试使用 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
应用程序文件夹包含我所有的 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
。
所以在我的 Docker 文件中,我添加了以下几行以使我的应用 运行ning 在我的 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
我很困惑所以如果有人有解决方案那就太棒了。
/app/node_modules/.bin/
不在您的 $PATH
中。
用 ENV PATH=$PATH:/app/node_modules/.bin
添加它,或者用路径 CMD ["/app/node_modules/.bin/gulp build-production && /app/node_modules/.bin/gulp serve:dist"]
.
作为前缀 gulp
首先,您应该使用节点映像而不是 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
我正在尝试使用 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
应用程序文件夹包含我所有的 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
。
所以在我的 Docker 文件中,我添加了以下几行以使我的应用 运行ning 在我的 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
我很困惑所以如果有人有解决方案那就太棒了。
/app/node_modules/.bin/
不在您的 $PATH
中。
用 ENV PATH=$PATH:/app/node_modules/.bin
添加它,或者用路径 CMD ["/app/node_modules/.bin/gulp build-production && /app/node_modules/.bin/gulp serve:dist"]
.
首先,您应该使用节点映像而不是 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