【发布时间】:2017-08-30 01:03:01
【问题描述】:
目标
我的 dockercompose.yml 中有 3 个实例,我只能启动 2 个实例,并且很难启动节点表达的第三个实例。
项目目录
.
├── Icon\r
├── angular
│ ├── Dockerfile
│ ├── README.md
│ ├── dist
│ │ ├── css
│ │ │ └── style.css
│ │ ├── img
│ │ │ ├── external.png
│ │ │ ├── favicon.png
│ │ │ ├── footer_logo.png
│ │ │ └── logo.png
│ │ ├── index.html
│ │ └── js
│ │ ├── bundle.js
│ │ └── vendor.js
│ ├── docs
│ │ ├── app
│ │ │ ├── api.js
│ │ │ ├── app.config.js
│ │ │ ├── app.module.js
│ │ │ └── guide.js
│ │ ├── build
│ │ │ ├── index.html
│ │ │ ├── partials
│ │ │ │ ├── api
│ │ │ │ │ ├── common
│ │ │ │ │ │ ├── directive
│ │ │ │ │ │ │ └── app.html
│ │ │ │ │ │ ├── directive.html
│ │ │ │ │ │ ├── type
│ │ │ │ │ │ │ ├── AppController.html
│ │ │ │ │ │ │ └── AppSidebarController.html
│ │ │ │ │ │ └── type.html
│ │ │ │ │ ├── common.html
│ │ │ │ │ ├── components.auth
│ │ │ │ │ │ ├── service
│ │ │ │ │ │ │ └── AuthService.html
│ │ │ │ │ │ └── service.html
│ │ │ │ │ ├── components.auth.html
│ │ │ │ │ ├── components.contact
│ │ │ │ │ │ ├── directive
│ │ │ │ │ │ │ └── lengthCheck.html
│ │ │ │ │ │ ├── directive.html
│ │ │ │ │ │ ├── service
│ │ │ │ │ │ │ └── ContactService.html
│ │ │ │ │ │ ├── service.html
│ │ │ │ │ │ ├── type
│ │ │ │ │ │ │ └── ContactEditController.html
│ │ │ │ │ │ └── type.html
│ │ │ │ │ ├── components.contact.html
│ │ │ │ │ └── components.html
│ │ │ │ ├── api.html
│ │ │ │ ├── guide
│ │ │ │ │ └── howTo.html
│ │ │ │ └── guide.html
│ │ │ └── src
│ │ │ ├── api-data.js
│ │ │ ├── api.js
│ │ │ ├── app.config.js
│ │ │ ├── app.module.js
│ │ │ ├── guide-data.js
│ │ │ └── guide.js
│ │ ├── config
│ │ │ ├── index.js
│ │ │ ├── processors
│ │ │ │ ├── api-data.js
│ │ │ │ ├── guide-data.js
│ │ │ │ └── index-page.js
│ │ │ └── templates
│ │ │ ├── constant-data.template.js
│ │ │ ├── content.template.html
│ │ │ ├── indexPage.template.html
│ │ │ └── module.template.html
│ │ └── content
│ │ ├── api
│ │ │ └── index.md
│ │ └── guide
│ │ ├── howTo.md
│ │ └── index.md
│ ├── files
│ │ ├── default.conf
│ │ └── nginx.conf
│ ├── gulpfile.babel.js
│ ├── karma.conf.js
│ ├── mocks
│ │ └── firebase.mock.js
│ ├── npm-shrinkwrap.json
│ ├── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── common
│ │ │ │ ├── app-footer.component.js
│ │ │ │ ├── app-footer.html
│ │ │ │ ├── app-header.component.js
│ │ │ │ ├── app-header.html
│ │ │ │ ├── app-pagination.html
│ │ │ │ ├── app-pagination.js
│ │ │ │ ├── app-sidebar.component.js
│ │ │ │ ├── app-sidebar.html
│ │ │ │ ├── app.component.js
│ │ │ │ ├── app.html
│ │ │ │ ├── app.module.js
│ │ │ │ ├── app.spec.js
│ │ │ ├── components
│ │ │ │ ├── auth
│ │ │ │ │ ├── auth-form
│ │ │ │ │ │ ├── auth-form.component.js
│ │ │ │ │ │ ├── auth-form.controller.js
│ │ │ │ │ │ ├── auth-form.html
│ │ │ │ │ │ └── auth-form.spec.js
│ │ │ │ │ ├── auth.module.js
│ │ │ │ │ ├── auth.spec.js
│ │ │ │ │ └── login
│ │ │ │ │ ├── login.component.js
│ │ │ │ │ ├── login.controller.js
│ │ │ │ │ ├── login.html
│ │ │ │ │ └── login.spec.js
│ │ │ │ ├── components.module.js
│ │ │ │ └── dashboard
│ │ │ │ ├── access-point-map
│ │ │ │ │ ├── access-point-map.component.js
│ │ │ │ │ └── access-point-map.html
│ │ │ │ ├── account-stats
│ │ │ │ │ ├── account-stats.component.js
│ │ │ │ │ └── account-stats.html
│ │ │ │ ├── dashboard.component.js
│ │ │ │ └── dashboard.html
│ │ │ ├── root.component.js
│ │ │ ├── root.html
│ │ │ └── services
│ │ │ ├── account.service.js
│ │ │ ├── auth.service.js
│ │ │ └── services.module.js
│ │ ├── img
│ │ │ ├── external.png
│ │ │ ├── favicon.png
│ │ │ ├── footer_logo.png
│ │ │ └── logo.png
│ │ ├── index.html
│ │ └── sass
│ │ ├── base
│ │ │ ├── _buttons.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _headings.scss
│ │ │ ├── _list-group.scss
│ │ │ ├── _main.scss
│ │ │ ├── _media.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _page-header.scss
│ │ │ ├── _scaffolding.scss
│ │ │ ├── _sections.scss
│ │ │ ├── _table.scss
│ │ │ └── _tabset.scss
│ │ ├── components
│ │ │ ├── _auth.scss
│ │ │ ├── _footer.scss
│ │ │ ├── _header.scss
│ │ │ ├── _panels.scss
│ │ │ ├── _root.scss
│ │ │ ├── _sidebar.scss
│ │ │ └── _tablet.scss
│ │ ├── layout
│ │ │ ├── _loading.scss
│ │ │ └── _smb.scss
│ │ ├── style.scss
│ │ ├── utils
│ │ │ ├── _colors.scss
│ │ │ └── _typography.scss
│ │ └── vendors
│ │ ├── _bootstrap.scss
│ │ ├── _colorpicker.scss
│ │ ├── _fontawesome.scss
│ │ └── _rzslider.scss
│ └── templates.js
├── docker-compose.yml
└── express
├── Dockerfile
├── LICENSE
├── README.md
├── bin
│ └── index.js
├── npm-debug.log
├── npm-shrinkwrap.json
├── package.json
└── server
├── app.js
├── config
│ └── config.json
├── controllers
│ ├── accounts.js
│ ├── auth.js
│ ├── index.js
│ ├── todoitems.js
│ └── todos.js
├── migrations
│ ├── 20160717103305-create-todo.js
│ └── 20160717104733-create-todo-item.js
├── models
│ ├── index.js
│ ├── todo.js
│ └── todoitem.js
├── routes
│ └── index.js
└── services
├── account.js
├── cpe.js
├── device.js
└── index.js
59 directories, 166 files
后端
Dockerfile
# Create image based on the official Node 6 image from the dockerhub
FROM node:6
RUN useradd --user-group --create-home --shell /bin/false nodejs
# Create a directory where our app will be placed
RUN mkdir -p /usr/src/app
# Change directory so that our commands run inside this new directory
WORKDIR /usr/src/app
# Copy dependency definitions
COPY package.json /usr/src/app
# Install dependecies
RUN npm install
# Get all the code needed to run the app
COPY . /usr/src/app
# Expose the port the app runs in
EXPOSE 3000
# Serve the app
CMD ["node", "server/app.js"]
根据我的文件结构,我上面的这个文件有什么错误吗?
前端
Dockerfile
FROM alpine:3.6
RUN apk add --update nginx && rm -rf /var/cache/apk/*
RUN mkdir -p /tmp/nginx/client-body
COPY files/nginx.conf /etc/nginx/nginx.conf
COPY files/default.conf /etc/nginx/conf.d/default.conf
COPY dist /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
dockercompose.yml
version: '2.1'
# Define the services/containers to be run
services:
angular:
build: angular # specify the directory of the Dockerfile
network_mode: bridge
ports:
- 8080:80/tcp
volumes:
- /Users/bheng/Sites/BASE/angular/dist:/usr/share/nginx/html:rw
express: #name of the second service
build: express # specify the directory of the Dockerfile
ports:
- "3000:3000" #specify ports forewarding
mem_limit: 300m
memswap_limit: 1g
volumes:
- .:/home/nodejs/app
- /home/nodejs/app/node_modules
links:
- database
database: # name of the third service
image: postgres
environment:
POSTGRES_PASSWORD: ih4cku
ports:
- "5432:5432" # specify port forewarding
结果
我无法启动我的第三个实例。
我一直得到
docker-compose up
Starting base_angular_1 ...
Starting base_database_1 ...
Starting base_database_1
Starting base_database_1 ... done
Starting base_express_1 ...
Starting base_express_1 ... done
Attaching to base_angular_1, base_database_1, base_express_1
database_1 | LOG: database system was shut down at 2017-08-30 00:54:24 UTC
database_1 | LOG: MultiXact member wraparound protections are now enabled
database_1 | LOG: database system is ready to accept connections
database_1 | LOG: autovacuum launcher started
base_express_1 以代码 0 退出
如何进一步调试?
【问题讨论】:
-
能把server/app.js的内容贴出来更好的帮助你吗? Compose 说它已成功退出,因此它只运行一次并退出。它不会启动实际的服务器或保持进程处于活动状态,这是容器保持正常运行所必需的
标签: node.js express docker docker-compose dockerfile