我有这个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运行应用程序时,它运行正常
答案 0 :(得分:0)
该问题可能是由于node:10-alpine
是一个标记,在该标记中基础图像可能会随着更新而发生变化,因此当您在不使用compose的情况下构建同一应用程序时,它不会提取最新图像, docker-compose将从docker hub进行拉取。
基于高山的图像可能存在一些依赖性问题,很难从一个版本调试到另一个版本,您可以找到针对特定问题here
的一些可能性我在应用程序中使用了标签node:8-alpine
,但我发现当前最新的node:8.15.1-alpine
导致了Exited with code 139
问题,该问题在先前的图像{{1}中没有出现}。降级可能是解决此类问题的最简单方法,请检查您是否也在使用bcrypt。
另一种选择是使用基于debian的映像,这种映像不太可能出现此类问题(只是考虑到它的大小要大得多)。