2014-11-09 21 views
5

Sto tentando di eseguire fig up con un'app di nodo minima.Fig up: impossibile trovare il modulo - funziona la finestra mobile

(modificato: volumi prelevati dalla fig.yml)

fig.yml:

example: 
    build: . 
    command: node server.js 
    ports: 
    - "4000:4000" 
    links: 
    - postgres 
postgres: 
    image: postgres 

Dockerfile:

FROM node 

ADD . /src 
WORKDIR /src 
RUN npm install 

server.coffee:

express = require 'express' 
app = express() 

app.get "/", (req, res) -> 
    res.send "Hello World" 

server = app.listen 4000,() -> 
    console.log 'Listening on port %d', server.address().port 

fig build procedere s come previsto. fig up fallisce con:

example_1 | module.js:340 
example_1 |  throw err; 
example_1 |   ^
example_1 | Error: Cannot find module '/src/server.js' 
example_1 |  at Function.Module._resolveFilename (module.js:338:15) 
example_1 |  at Function.Module._load (module.js:280:25) 
example_1 |  at Function.Module.runMain (module.js:497:10) 
example_1 |  at startup (node.js:119:16) 
example_1 |  at node.js:906:3 

Quello che non capisco è che posso eseguire il server in un contenitore (che fig costruito) senza fig:

$ docker run -it dockerexample_example /bin/bash 
[email protected]:/# node /src/server.js 
Listening on port 4000 

O

$ docker run -it dockerexample_example 
Listening on port 4000 

O

$ docker run -it -p 4000:4000 dockerexample_example 
Listening on port 4000 

Cosa c'è di diverso nel modo in cui fig sta cercando di eseguire questo contenitore?

Questi file sono disponibili qui: https://github.com/skyl/docker-example

risposta

4

La differenza è il volumes. Negli esempi docker run non si specifica alcun volume, ma nel proprio fig.yml si sta montando la directory di lavoro corrente su /src nel contenitore, quindi lo /src aggiunto durante la compilazione viene mascherato dal volume e i node_modules non sono disponibili.

Penso che si dovrebbe andare bene a rimuovere il volumes dal fig.yml, altrimenti sarà necessario eseguire l'installazione di npm anche all'esterno del contenitore.

+0

Nota che ho dovuto forzatamente "fare il docker di rmi' sulle immagini brutte, a quanto pare. –

+0

'fig rm' può funzionare anche. –

+0

'fig up' ha attualmente un problema con le modifiche alla definizione dei volumi https://github.com/docker/fig/issues/447 –

Problemi correlati