端口转发 docker 中的 node/postgres 应用程序

portforwarding a node/postgres application in docker

我开始使用 docker,我正在尝试 运行 一个 node/postgres 应用程序。 当我 运行 使用 docker-compose up 的应用程序时,我得到以下输出:

Starting nodedocker_db_1
Starting nodedocker_myapp_1
Attaching to nodedocker_db_1, nodedocker_myapp_1
db_1     | LOG:  database system was shut down at 2016-08-03 08:33:02 UTC
db_1     | LOG:  MultiXact member wraparound protections are now enabled
db_1     | LOG:  autovacuum launcher started
db_1     | LOG:  database system is ready to accept connections
myapp_1  | npm info it worked if it ends with ok
myapp_1  | npm info using npm@2.15.8
myapp_1  | npm info using node@v4.4.7
myapp_1  | npm info prestart NEXTofferte@0.0.1
myapp_1  | npm info start NEXTofferte@0.0.1
myapp_1  | 
myapp_1  | > NEXTofferte@0.0.1 start /usr/src/app
myapp_1  | > node server.js
myapp_1  | 
myapp_1  | Server running at http://localhost:3000/

很好,它正在运行,但我无法从我的系统访问 localhost 3000。 所以我尝试用这个转发它:

docker build -t devoon/offerteportaal .
docker-compose run -p 49160:3000 -d devoon/offerteportaal

构建完成且没有错误,但是 运行 命令给出了没有这样的服务的错误:devoon/offerteportaal

我希望这里有人能给我指出正确的方向。

编辑: 我选择了答案中的第二个选项并编辑了我的 yml 文件。
为了清楚起见,我将把它包含在问题中:
docker-compose.yml

db:  
  image: postgres
myapp:  
  build: .
  ports:
    - "49160:3000"
  links:
    - db
  environment:
    - PGHOST=db
    - PGDB=offerteportaal
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=postgres
    - DATABASE_URL=postgres://postgres:postgres@db:5432/offerteportaal

您需要 docker run -p 49160:3000 -d devoon/offerteportaal 或修改您的 docker-compose.yml 文件:

db:
  image: ...

myapp:
  build: .
  ports:
    - "49160:3000"

docker-compose up -d