#node.js #docker #npm #nestjs
#node.js #docker #npm #nestjs
Вопрос:
Я пытаюсь запустить и запустить NestJS в моем контейнере. В настоящее время у меня это настроено как мой docker-compose.yml
services:
redis-cluster:
image: internal-repo.com/devops/redis-cluster:5.0.5
ports:
- 7000:7000
- 7001:7001
- 7002:7002
- 7003:7003
- 7004:7004
- 7005:7005
- 7006:7006
- 7007:7007
- 7008:7008
environment:
IP: 0.0.0.0
MASTERS: 3
SLAVES_PER_MASTER: 2
app-orders:
image: app-orders
build:
context: ..
dockerfile: $PWD/Dockerfile
working_dir: /workspace
depends_on:
- 'redis-cluster'
environment:
NODE_ENV: development
volumes:
- ..:/workspace
ports:
- 50099:9229
- 3000:3000
command: /bin/sh -c "while sleep 1000; do :; done"
У меня есть это для моего Dockerfile
FROM internal-repo.com/devops/node/ubuntu-1804:12.16.2 as build-env
ENV NODE_VERSION 12.16.2
WORKDIR /workspace
RUN apt-get update amp;amp; apt install python -y
# Ensure the image timezone mirrorsCorp HQ
ENV TZ=America/Los_Angeles
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime amp;amp; echo $TZ > /etc/timezone
COPY .devcontainer/library-scripts/docker-debian.sh /tmp/library-scripts/
COPY package.json package.json
RUN npm i -g nodemon
RUN npm i -g @nestjs/cli
RUN npm install
# App specific environment
ENV PACKAGE_JSON_PATH ../package.json
Я настроил свой docker на запуск команды sleep, чтобы я мог запустить этот контейнер и запустить с ним интерактивную оболочку. Если бы я попытался поместить команду npm в качестве run, она просто вылетела бы через несколько минут.
В интерактивной оболочке я попытался запустить npm start: dev, который использует rimraf для удаления папки dist, а затем запустить nest start —watch. Проблема в том, что она будет работать некоторое время, сгенерирует новую папку dist, а затем быстро умрет. В журнале npm указано только ошибка 147. Если я попытаюсь запустить nest start —watch вручную, он немного посидит, говоря «Запуск компиляции в режиме просмотра», и просто скажет «Убит». Я не знаю, почему это сбой или что исправить.
Странно то, что если я не попытаюсь запустить ее в контейнере, она будет нормально работать на моем Mac (при условии, что у меня есть кластер redis, который уже запущен и запущен в контейнере)