2017-07-23 3 views
1

Ich habe 3 Nodejs Microservices auf Nodejs ausgeführt. Eine davon läuft in einer separaten Subdomain und die anderen 2 werden basierend auf dem Pfad geroutet. Meine Docker-Datei ist als untenWie schreibe ich Docker für die folgende App-Struktur?

FROM node:latest  

RUN mkdir -p /usr/src/app     
WORKDIR /usr/src/app 

COPY package.json /usr/src/app/   
RUN npm install  

COPY . /usr/src/app 
EXPOSE 9000   
CMD [ "npm", "start" ] 

Der Port für jedes Bild unterschiedlich ist. Danach habe ich ein nginx auf Bare-Metal-Server mit allen Konfigurationen für Reverse-Proxy ausgeführt. Ich weiß, dass dies nicht der beste Weg ist. Wie kann ich 3 separate Instanzen laufen lassen und auf dem gleichen Port hören?

Auch für die Datenbankverknüpfung verwende ich --link Flag, aber das ist wie in den Dokumenten, was ist der richtige Weg, um dies zu umgehen gezeigt?

+0

[Diese Antwort] (https://stackoverflow.com/a/45197727/6207775) Sie connectio bei der Einrichtung helfen können ns in Ihrem Container. Weitere Informationen finden Sie unter [docker container networking] (https://docs.docker.com/engine/userguide/networking/) – Ayushya

Antwort

1

Anstelle von NGiNX verwenden Sie Traefik: Es wird seine Reverse-Proxy-Regel in Abhängigkeit von den Containern anpassen, die es durch Consul entdeckt.
Siehe "Traefik Swarm cluster", um einen Cluster einzurichten.

Sie können dann Ihre Datenbank deklarieren, damit die Basis immer auf demselben Knoten mit service constrains ausgeführt wird.

Siehe zum Beispiel „Running a MongoDB Replica Set on Docker 1.12 Swarm Mode: Step by Step“:

Der Grundriss ist, jedes Mitglied der Replik als separater Dienst und Verwendungsbeschränkungen festlegen definieren Schwarm Orchesterbearbeitung Bewegt sie weg von ihrem Datenmengen

zu verhindern,

Zum Beispiel:

[email protected]:~$ docker node update --label-add mongo.replica=1 $(docker node ls -q -f name=manager1) 

docker service create --replicas 1 --network mongo \ 
    --mount type=volume,source=mongodata1,target=/data/db \ 
    --mount type=volume,source=mongoconfig1,target=/data/configdb \ 
    --constraint 'node.labels.mongo.replica == 1' \ 
    --name mongo1 mongo:3.2 mongod --replSet example 
Verwandte Themen