我的adapter.notifyDataSetChanged();
中有3个实例,我只能启动2个实例,并且很难启动我的节点表达的第三个实例。
dockercompose.yml
Dockerfile
.
├── 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"]
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;"]
我无法启动第三个实例。
我一直在
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
base_express_1退出,代码为0
如何进一步调试?
答案 0 :(得分:1)
好的,在您发布app.js
之后,我想我可以帮助您。
当您运行节点app.js时,该app.js正在执行并成功退出,因为它只是一个模块但没有服务器正在启动。
您需要这样的文件:
创建一个bin
文件夹并在里面创建一个文件,将此文件命名为www
名字只是建议,你可以任意命名。
#!/usr/bin/env node
/**
* Load any undefined ENV variables
*/
require('dotenv').config();
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('app:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
然后确保安装这些软件包:
npm install debug --save
npm install dotenv --save
如果需要,可以从www
文件中删除这些内容。我只是将它们包含在这里,以便我的共享www
文件运行。
然后,在快递应用的Dockerfile
中,使用:
node ./bin/www
此命令启动服务器,使进程保持活动状态并为app.js express模块提供服务。确保app.js
中www
文件所在的位置与您文件的位置相匹配。我把../app
放在要求中。
如何将其包含在DockerFile中?
我推荐这个:
在start
:
package.json
条目
"start": "node ./bin/www"
。
然后,更新您的scripts
:
Dockerfile
或CMD npm start