Node.js docker容器崩溃,退出,代码139
我有这个docker文件构建/运行一个节点应用程序Node.js docker容器崩溃,退出,代码139,node.js,mongodb,docker,docker-compose,Node.js,Mongodb,Docker,Docker Compose,我有这个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
# ---- 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编写文件
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运行应用程序时,它工作正常问题可能是因为
节点:10 alpine
是一个标记,在该标记中,基础图像可能会随着更新而更改,因此当您在不使用compose的情况下构建同一应用程序时,它不会提取最新的图像,docker compose将改为从docker hub执行拉操作
基于alpine的图像可能存在一些依赖性问题,从一个版本调试到另一个版本非常困难,您可以找到解决此特定问题的一些可能性
我在应用程序中使用了标签节点:8-alpine
,我发现当前最新的节点:8.15.1-alpine
导致退出,代码139
问题在前一张图像节点:8.15.0-alpine
中不存在。降级可能是解决此类问题的最简单解决方案,请检查您是否也在使用bcrypt
另一个选择是使用基于Debian的图像,它不太可能出现这种问题(只是考虑它的尺寸稍大)。