我正在尝试设置另一个基于 Docker 的节点应用程序。我已经有一个正在运行的应用程序并且按预期工作。但是第二个应用程序在启动时失败并提示 http://localhost:3000 。请注意,在处理第二个应用程序时,第一个应用程序已经被正确关闭。
以下是我的 docker-composer.yml 文件内容:
以下是我的 docker-composer.yml 文件内容:
version: '3.0'
services:
web:
image: node:boron
ports:
- "3000:3000"
volumes:
- .:/myapp
environment:
NODE_ENV: 'dev'
DATABASE_URL: postgres://postgres:xxxx@db:5432/myapp
depends_on:
- db
entrypoint: /bin/bash
tty: true
db:
image: postgres:9.6.3
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "xxxxx"
$ docker-compose run --service-ports web
$cd app
$npm run web
按预期运行应用程序
docker ps -a 显示映射为 0.0.0.0:3000->3000/tcp
但是当我启动 http://localhost:3000/api/message
它加载了一条消息,指出该网站无法启动...
$docker ps
b9b90610051a node:boron "/bin/bash" 6 seconds ago Up 6 seconds 0.0.0.0:3000->3000/tcp app_web_2
14739cf56f24 postgres:9.6.3 "docker-entrypoint.s…" 6 hours ago Up 6 hours 5432/tcp app_db_1
package.json
{
"name": “my app”,
"engines": {
"node": "6.11.1",
"npm": "3.10.10"
},
"version": "0.1.0",
"description": "",
"main": "dist/bin/www/index.js",
"scripts": {
"start": "node dist/bin/www/index.js",
"build": "tic -p .",
"dev": "ts-watch --onSuccess \"node ./dist/bin/www/index.js\""
},
index.ts文件- HTTP监听代码
const port = normalizePort(process.env.PORT || 3000);
const env = Environment.for(process.env.NODE_ENV || 'dev');
console.log('Starting server...'+port)
function startServer(env : Environment) {
const app = new App(env).express;
app.set('port', port);
const server = http.createServer(app);
server.on('error', onError);
server.on('listening', function() {
let addr = server.address();
let bind = (typeof addr === 'string') ? `pipe ${addr}` : `port ${addr.port}`;
console.log(`Listening on ${bind}`);
});
}
docker ps
命令(不带-a
标志)会返回什么? - tgallacher