2017-03-07 3 views
0

In meinem Dockerfile, ich habe folgendes:Starten mehrerer Dienste innerhalb Docker Container

# Start app and proxy 
CMD service nginx start 
CMD ["nodejs", "/src/index.js"] 

es auf diese Weise tun, die Node-Server ausgeführt wird, aber nicht nginx. Ebenso, wenn ich so etwas mache:

# Start app and proxy 
CMD service nginx start && nodejs /src/index.js 

dann läuft nginx, aber nicht Node.

Habe ich etwas offensichtlich übersehen?

+2

Knoten und nginx beide können webservers sein, wenn Sie beide benötigen, spin up-Knoten in einem Behälter, nginx in einem zweiten Behälter, so dass sie in ihrem eigenen Netz gestellt, und sie kommunizieren mit einander über DNS, z 'http: // node/api-call' – BMitch

+0

Laufen Sie sie auf verschiedenen Ports ...? –

+1

es gibt Möglichkeiten, um sie zusammen laufen zu lassen, aber es sieht aus wie die "_wrong_" Weg zum Benutzer "docker" ... der richtige Weg ist, einen Dienst pro Container zu haben, wie andere schon gesagt –

Antwort

0

können Sie Docker Erbe verwenden Verknüpfung:

  1. In nginx Ordner docker build -t docker-nginx .
  2. In Knoten Ordner docker build -t docker-node .
  3. docker run -d --name app docker-node
  4. docker run -d --name nginx --link app:app docker-nginx

Dann zeigen Sie App in ng Inx-Konfigurationsdatei. Wie app:3000

Sie könnten auch docker-compose verwenden, die Image-Erstellung und Container-Betrieb vereinfachen würde. Zur Kasse gehen documentation.

1

Ich denke, dass Sie Ihr Problem mit docker-compose teilen können.

Sie erhalten einen Container mit Ihrem nginx Image und einen Container app mit Ihrer Knotenanwendung.

Dann führen Sie einfach einen docker-compose up

Verwandte Themen