docker容器崩溃,退出代码为139
我有这个docker文件build /并运行一个节点应用程序
# ---- 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:10-alpine
是一个标签,其中底层图像可能随更新而变化,因此当您构建相同的应用程序而不使用compose时它不会拉动最近的图像,docker-compose会做一个拉动而是来自码头工人中心。
基于高山的图像可能有一些依赖性问题很难从一个版本调试到另一个版本,你可以找到这个特定问题的一些可能性here
我在我的应用程序中使用标签node:8-alpine
,我发现当前最新的node:8.15.1-alpine
导致Exited with code 139
问题,这在上一张图片node:8.15.0-alpine
中没有出现。降级可能是解决此类问题的最简单的解决方案,请检查您是否也在使用bcrypt。
另一种选择是使用基于debian的图像,这种图像不太可能出现这种问题(只是考虑它的尺寸略大)。
docker容器崩溃,退出代码为139
我有这个docker文件build /并运行一个节点应用程序
# ---- 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:10-alpine
是一个标签,其中底层图像可能随更新而变化,因此当您构建相同的应用程序而不使用compose时它不会拉动最近的图像,docker-compose会做一个拉动而是来自码头工人中心。
基于高山的图像可能有一些依赖性问题很难从一个版本调试到另一个版本,你可以找到这个特定问题的一些可能性here
我在我的应用程序中使用标签node:8-alpine
,我发现当前最新的node:8.15.1-alpine
导致Exited with code 139
问题,这在上一张图片node:8.15.0-alpine
中没有出现。降级可能是解决此类问题的最简单的解决方案,请检查您是否也在使用bcrypt。
另一种选择是使用基于debian的图像,这种图像不太可能出现这种问题(只是考虑它的尺寸略大)。