多容器 Docker 应用程序部署失败
Posted
技术标签:
【中文标题】多容器 Docker 应用程序部署失败【英文标题】:Multicontainer Docker application failing on deploy 【发布时间】:2018-11-07 02:38:31 【问题描述】:所以我在将我的应用程序部署到 Amazon 的弹性 beanstalk 时遇到了问题。我的应用程序是一个多容器 Docker 应用程序,其中包括节点服务器和 mongoDB。不知何故,应用程序每次都会崩溃,我从 mongoDB 得到这个奇怪的错误。 错误如下:
18-05-28T12:53:02.510+0000 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 3867 processes, 32864 files. Number of processes should be at least 16432 : 0.5 times number of files.
2018-05-28T12:53:02.540+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2018-05-28T12:53:02.541+0000 I NETWORK [initandlisten] waiting for connections on port 27017
2018-05-28T12:53:03.045+0000 I CONTROL [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends
2018-05-28T12:53:03.045+0000 I NETWORK [signalProcessingThread] shutdown: going to close listening sockets...
2018-05-28T12:53:03.045+0000 I NETWORK [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
2018-05-28T12:53:03.045+0000 I FTDC [signalProcessingThread] Shutting down full-time diagnostic data capture
2018-05-28T12:53:03.047+0000 I STORAGE [signalProcessingThread] WiredTigerKVEngine shutting down
2018-05-28T12:53:03.161+0000 I STORAGE [signalProcessingThread] shutdown: removing fs lock...
2018-05-28T12:53:03.161+0000 I CONTROL [signalProcessingThread] now exiting
2018-05-28T12:53:03.161+0000 I CONTROL [signalProcessingThread] shutting down with code:0
这是我的 Dockerrun.aws.json 文件:
"AWSEBDockerrunVersion": 2,
"volumes":[
"name": "mongo-app",
"host":
"sourcePath": "/var/app/mongo-app"
,
"name": "some-api",
"host":
"sourcePath": "/var/app/some-api"
],
"containerDefinitions": [
"name": "mongo-app",
"image": "mongo:latest",
"memory": 128,
"portMappings": [
"hostPort": 27017,
"containerPort": 27017
],
"mountPoints": [
"sourceVolume": "mongo-app",
"containerPath": "/data/db"
]
,
"name": "server",
"image": "node:8.11",
"memory": 128,
"portMappings": [
"hostPort": 80,
"containerPort": 8001
],
"links": [
"mongo-app"
],
"mountPoints":[
"sourceVolume": "some-api",
"containerPath": "/some-data"
]
]
这是我的 Dockerfile:
FROM node:8.11
RUN mkdir -p /api
WORKDIR /api
COPY package.json /api
RUN cd /api && npm install
COPY . /api
EXPOSE 8001
CMD ["node", "api/app.js"]
任何想法为什么应用程序崩溃并且没有部署?在我看来是 mongoDB 导致了问题,但我无法理解或找到问题的根源。
提前谢谢你!
【问题讨论】:
【参考方案1】:我也花了一段时间试图弄清楚这一点。
解决方案:为"containerPath": "/data/configdb"
添加一个挂载点。 Mongo 希望能够同时写信给/data/db
和/data/configdb
。
另外,您可能希望将 Mongo 的 "memory": 128
提升到更高的级别。
【讨论】:
以上是关于多容器 Docker 应用程序部署失败的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core容器化之多容器应用部署@Docker-Compose
使用 EBS 部署多容器 docker 环境(flask 和 nginx)