2016-09-22 3 views
1

Ich weiß, es gibt mehrere Beispiele (eigentlich nur ein paar) da draußen, und ich habe einige untersucht und versucht, sie auf meinen Fall anzuwenden, aber dann, wenn ich versuche, den Container anzuheben (docker-compose up) Ich habe jedes Mal mehr oder weniger den gleichen Fehler.Heben Sie Segel in Docker Container

Meine Ordnerstruktur ist:

sails-project 
--app 
----api 
----config 
----node_modules 
----.sailsrc 
----app.js 
----package.json 

--docker-compose.yml 
--Dockerfile 

Die docker-compose.yml Datei:

sails: 
    build: . 
    ports: 
    - "8001:80" 
    links: 
    - postgres 
    volumes: 
    - ./app:/app 
    environment: 
    - NODE_ENV=development 
    command: node app 

postgres: 
    image: postgres:latest 
    ports: 
     - "8002:5432" 

Und die Dockerfile:

FROM node:0.12.3 

RUN mkdir /app 

WORKDIR /app 

# the dependencies are already installed in the local copy of the project, so 
# they will be copied to the container 
ADD app /app 

CMD ["/app/app.js", "--no-daemon"] 

RUN cd /app; npm i 

Ich habe auch versucht RUN npm i -g sails statt mit (im Dockerfile) und command:sails lift, aber ich bin g etting:

enter image description here

Natürlich habe ich versucht, verschiedene Konfigurationen der Dockerfile und dann mit unterschiedlichen Befehlen (node app, sails lift, npm start, etc ...), aber immer wieder mit dem gleichen Fehler zu enden. Irgendwelche Ideen?

Antwort

1

Mit command: node app überschreiben Sie die commandCMD ["/app/app.js", "--no-daemon"], die als Konsequenz keinen Effekt haben werden. WORKDIR /appwill create an app folder so müssen Sie nicht RUN mkdir /app. Und am wichtigsten ist, dass Sie RUN cd /app; npm i vor CMD ["/app/app.js", "--no-daemon"] haben. NPM-Abhängigkeiten müssen installiert sein, bevor Sie Ihre App starten.

+0

Vergessen zu sagen, dass ich die Abhängigkeiten in meiner lokalen Kopie des Projekts installiert habe, so 'ADD app/app' kopiert die Abhängigkeiten. Ich werde das OP jetzt mit dieser Info aktualisieren. :) – Milkncookiez

+0

@Milkncookiez sicher. In einem vanilla sails-Projekt ist der sails-Ordner in node_modules jedoch ein Symlink. In Ihrer Dockerdatei wird nur der Symlink kopiert und nicht der gesamte Ordner. Um diese Installation zu testen, segeln Sie lokal in Ihrem Projektordner. –

+0

Ich tat, und es läuft jetzt in Ordnung, ich weiß nicht warum und wie. In der 'Dockerfile' habe ich mich nicht wirklich verändert. – Milkncookiez