英文:
Local gulp not found inside docker container
问题
I am trying to rebuild a past project regarding Django and gulp.js. Gulp is used to build the static assets from Django. I am now dockerizing this project. In order to do it, I am using a python and node combo image from this hub. I install the necessary packages both from Django and node. I copy the source code into the container. Run gulp
and ./manage.py runserver
. When I run gulp
, I get an error that the local gulp cannot be found in the directory.
app | [06:49:46] Local gulp not found in /usr/src/app
app | [06:49:46] Try running: yarn add gulp
I have this directory tree. The src/
holds the source codes and I copy this to the container. It holds the gulpfile.js
and manage.py
.
.
└── project/
├── dockerfiles/
│ └── app.Dockerfile
├── src/
│ ├── apps/
│ ├── entrypoints/
│ │ └── entrypoint-local.sh
│ ├── gulpfile.js
│ ├── manage.py
│ ├── package.json
│ └── package-lock.json
├── .local.env
└── docker-compose.yml
Here is my docker-compose file.
version: "3.9"
app:
container_name: app
build:
dockerfile: ./dockerfiles/app.Dockerfile
entrypoint: ./entrypoints/entrypoint-local.sh
volumes:
- ./src:/usr/src/app
- static:/static
ports:
- "8000:8000"
env_file:
- .local.env
Here is how I build the app
container.
# syntax=docker/dockerfile:1
FROM nikolaik/python-nodejs:python3.7-nodejs19-bullseye
WORKDIR /usr/src/app
RUN apt-get update \
&& apt-get install -y binutils libproj-dev libgeos-dev gdal-bin libgeoip1 libgdal-dev gdal-bin \
&& apt-get install -y build-essential libssl-dev libffi-dev python3-dev python3-pip python3-venv \
&& rm -fr /var/lib/apt/lists
RUN pip install --upgrade pip
COPY /src/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY /src/package*.json .
RUN npm install
RUN npm install -g gulp-cli
RUN npm install --save-dev gulp
COPY /src .
RUN chmod +x ./entrypoints --recursive
In my entrypoint, I first run gulp
before ./manage.py runserver
.
#!/bin/sh
python manage.py migrate --no-input
gulp
python manage.py runserver
The gulp command triggers the error from the above. I have tried placing a list directory in the entrypoint to check if gulpfile.js
is present and can confirm it is present. I also tried to remove the gulp
command and run ./manage.py runserver
and the Django runs. Why am I getting that error and how to fix it?
英文:
I am trying to rebuild a past project regarding Django and gulp.js. Gulp is used to build the static assets from Django. I am now dockerizing this project. In order to do it, I am using a python and node combo image from this hub. I install the necessary packages both from Django and node. I copy the source code into the container. Run gulp
and ./manage.py runserver
. When I run gulp
, I get an error that the local gulp cannot be found in the directory.
app | [06:49:46] Local gulp not found in /usr/src/app
app | [06:49:46] Try running: yarn add gulp
I have this directory tree. The src/
holds the source codes and I copy this to the container. It holds the gulpfile.js
and manage.py
.
.
└── project/
├── dockerfiles/
│ └── app.Dockerfile
├── src/
│ ├── apps/
│ ├── entrypoints/
│ │ └── entrypoint-local.sh
│ ├── gulpfile.js
│ ├── manage.py
│ ├── package.json
│ └── package-lock.json
├── .local.env
└── docker-compose.yml
Here is my docker-compose file.
version: "3.9"
app:
container_name: app
build:
dockerfile: ./dockerfiles/app.Dockerfile
entrypoint: ./entrypoints/entrypoint-local.sh
volumes:
- ./src:/usr/src/app
- static:/static
ports:
- "8000:8000"
env_file:
- .local.env
Here is how I build the app
container.
# syntax=docker/dockerfile:1
FROM nikolaik/python-nodejs:python3.7-nodejs19-bullseye
WORKDIR /usr/src/app
RUN apt-get update \
&& apt-get install -y binutils libproj-dev libgeos-dev gdal-bin libgeoip1 libgdal-dev gdal-bin \
&& apt-get install -y build-essential libssl-dev libffi-dev python3-dev python3-pip python3-venv \
&& rm -fr /var/lib/apt/lists
RUN pip install --upgrade pip
COPY /src/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY /src/package*.json .
RUN npm install
RUN npm install -g gulp-cli
RUN npm install --save-dev gulp
COPY /src .
RUN chmod +x ./entrypoints --recursive
In my entrypoint, I first run gulp
before ./manage.py runserver
.
#!/bin/sh
python manage.py migrate --no-input
gulp
python manage.py runserver
The gulp command triggers the error from the above. I have tried placing a list directory in the entrypoint to check if gulpfile.js
is present and can confirm it is present. I also tried to remove the gulp
command and run ./manage.py runserver
and the Django runs. Why am I getting that error and how to fix it?
答案1
得分: 1
你正在容器内创建一个目录 /usr/src/app
(WORKDIR /usr/src/app
),用于安装 Node.js 的要求。
然后,你使用卷映射覆盖了该目录:
volumes:
- ./src:/usr/src/app
这将会用 ./src
的内容来_替换_容器内的目录 /usr/src/app
(刚刚安装所有要求的位置)。
英文:
You're creating a directory /usr/src/app
inside the container (WORKDIR /usr/src/app
) where you install the Node.js requirements.
Then you overwrite that directory with a volume mapping:
volumes:
- ./src:/usr/src/app
This will replace the directory /usr/src/app
inside the container (where you just installed all the requirements) with the contents of ./src
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论