Сбой док-контейнера с выходом с кодом 139 - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть этот сборочный файл Docker / и запускаю приложение узла

# ---- Base Node ----
FROM node:10 AS base
# Create app directory
WORKDIR /app

# ---- Dependencies ----
FROM base AS dependencies  
COPY package.json ./
# install app dependencies including 'devDependencies'
RUN npm install

# ---- Copy Files/Build ----
FROM dependencies AS build  
WORKDIR /app
COPY . /app
# Build the app
RUN npm run build
WORKDIR /app/dist
# install npm models in dist
RUN npm install --only=production

# --- Release with Alpine ----
FROM node:10-alpine AS release  
# Create app directory
WORKDIR /app
# optional
ENV NODE_ENV=development
ENV MONGO_HOST=mongodb://localhost/chronas-api
ENV MONGO_PORT=27017
ENV PORT=80

# copy app from build
COPY --from=build /app/dist/ ./
CMD ["node", "index.js"]

и используя этот файл docker-compose

version: '3'

services:
  database:
    image: mongo
    container_name: mongo
    ports:
      - "27017:27017"

  app:
    build: .
    container_name: chronas_api
    ports:
      - "80:80"  
      - "5858:5858"
    links:
     - database
    environment:
      - JWT_SECRET='placeholder'
      - MONGO_HOST=mongodb://database/chronas-api
      - APPINSIGHTS_INSTRUMENTATIONKEY='placeholder'
      - TWITTER_CONSUMER_KEY=placeholder
      - TWITTER_CONSUMER_SECRET=placeholder
      - TWITTER_CALLBACK_URL=placeholder
      - PORT=80
    depends_on:
      - database
    stdin_open: true
    tty: true      

всегда, когда я пытаюсь записать в mongodb, контейнер узла вылетает с этой ошибкой:

выход с кодом 139

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

1 Ответ

0 голосов
/ 18 марта 2019

Проблема может быть вызвана тем фактом, что node:10-alpine - это тег, в котором базовое изображение может изменяться с обновлениями, поэтому, когда вы создаете одно и то же приложение без использования compose, оно не извлекает самое последнее изображение, docker- Вместо этого compose будет извлекать данные из док-станции.

Изображения, основанные на alpine, могут иметь некоторые проблемы с зависимостями, которые довольно сложно отладить из одной версии в другую, вы можете найти некоторые возможности для этой конкретной проблемы здесь

Я использовал тег node:8-alpine в своем приложении и обнаружил, что текущий последний node:8.15.1-alpine вызывает проблему Exited with code 139, которой не было на предыдущем изображении node:8.15.0-alpine. Понижение версии может быть самым простым решением для решения этой проблемы, проверьте, используете ли вы также bcrypt.

Другой вариант - использовать образ на основе Debian, который с меньшей вероятностью будет иметь такие проблемы (просто учтите, что он немного больше по размеру).

...