неверный заголовок ELF после нескольких автоматических перезапусков в dev docker -container - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть настройка dev, использующая docker, и приложение, и Jest. Api следит за моей кодовой базой и использует babel для отслеживания любых изменений и компиляции новой версии, pm2 запускается внутри контейнера docker, чтобы перезапустить приложение при любых изменениях. В apiTest я запускаю шутки в режиме просмотра.

docker -compose.yml

version: '3.7'
services:
  api:
    image: api
    build: ./
    env_file:
      - .env
    ports:
      - 4000:4000
    volumes:
      - .:/app
      - /app/node_modules/
    tty: true
  apiTest:
      image: api
      build: ./
      env_file:
        - .test.env
      volumes:
        - .:/app
        - /app/node_modules/
      tty: true
      command: 'npm test'

Dockerfile

FROM node:12.15.0
WORKDIR /app

COPY package.json /app

COPY package-lock.json /app

RUN npm install

EXPOSE 4000

CMD ["npm", "run", "start:dev"]

пакет. json

  "scripts": {
    "start": "npm run build && node lib/bin/www",
    "start:dev": "npm run build && npx knex migrate:latest && concurrently \"npm:build:watch\" \"npm:pm2:logs\" \"npm:run:dev\"",
    "run:dev": "pm2-runtime start ecosystem.config.js",
    "pm2:logs": "pm2 logs",
    "type-check": "tsc --noEmit",
    "type-check:watch": "npm run type-check -- --watch",
    "build": "npm run build:types && npm run build:js",
    "build:types": "tsc --emitDeclarationOnly",
    "build:watch": "babel src --out-dir lib --extensions \".ts,.tsx,.js\" --source-maps inline --watch",
    "build:js": "babel src --out-dir lib --extensions \".ts,.tsx,.js\" --source-maps inline",
    "test": "jest --watch",
    "pretest": "npm run migrate:reset",
    "migrate:reset": "npx knex migrate:rollback --all && npx knex migrate:latest",
    "migrate:seed": "npx knex migrate:latest && npx knex seed:run",
    "migrate": "docker-compose run --rm api npx knex migrate:latest",
    "migrate:rollback": "docker-compose run --rm api npx knex migrate:rollback",
    "seed": "docker-compose run --rm api npx knex seed:run"

Когда я нажимаю docker - составить, сначала он работает отлично, но после нескольких автоматических перезапусков с pm2 я получаю

api_1      | [run:dev] Error: /app/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: invalid ELF header

Когда я перезагружаю docker - составьте ошибку, кажется, ушла.

...