【问题标题】:docker container crashes with exited with code 139docker 容器崩溃并退出,代码为 139
【发布时间】:2019-04-07 01:06:09
【问题描述】:

我有这个 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 退出

谁能帮忙?当我只使用 docker 运行应用程序时,它工作正常

【问题讨论】:

  • 你找到解决办法了吗?

标签: node.js mongodb docker docker-compose


【解决方案1】:

这个问题可能是因为node:10-alpine 是一个标签,其中底层图像可能会随着更新而改变,所以当你在不使用 compose 的情况下构建相同的应用程序时,它不会提取最新的图像,docker- compose 将改为从 docker hub 拉取数据。

基于 alpine 的图像可能存在一些从一个版本到另一个版本很难调试的依赖问题,您可以找到针对此特定问题的一些可能性here

我在我的应用程序中使用了标签node:8-alpine,我发现当前最新的node:8.15.1-alpine 导致了Exited with code 139 问题,而之前的图像node:8.15.0-alpine 中没有。降级可能是解决此类问题最简单的解决方案,请检查您是否也在使用 bcrypt。

另一种选择是使用基于 debian 的映像,这种映像不太可能出现此类问题(只需考虑它的大小略大)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2013-10-01
    • 2017-12-14
    相关资源
    最近更新 更多