2017-12-16 3 views
1

Ich habe eine Docker-compose.yml-Datei, die so etwas wie diesesAusführen mehrerer Websites - Docker komponieren

version: "3.0" 

volumes: 
    dbdata: 
    .: 

services: 
    api: 
    build: 
     context: ./api 
     args: 
     - APP_NAME=${APP_NAME} 
     dockerfile: dockerfile 
    depends_on: 
     - database 
     - webserver 
    volumes: 
     - ./api:/usr/local/share/${APP_NAME} 

    database: 
    image: mysql:5.7 
    volumes: 
     - ./dbdata:/var/lib/mysql 
    restart: always 
    ports: 
     - ${COMPOSE_DB_PORT}:3306 

    webserver: 
    build: 
     context: . 
     dockerfile: webserver.dockerfile 
    working_dir: "/usr/local/share/${APP_NAME}" 
    volumes: 
     - ./api:/usr/local/share/${APP_NAME} 
    restart: always 
    ports: 
     - ${COMPOSE_APP_PORT}:80 

Es verfügt über 3 Dienste aussieht. eine Website, eine Datenbank und ein Webserver, der wie erwartet funktioniert.

Jetzt habe ich ein anderes separates Web-Projekt, das ein CMS ist, das die gleiche Datenbank wie das API-Projekt verwendet und ich möchte es zu dieser Docker-Compose-Datei hinzufügen, aber ich kann nicht herausfinden, wie Sie den Webserver-Dienst konfigurieren Anfragen von diesen 2 Websites bearbeiten. Sollte ich einen weiteren Webserver für die cms hinzufügen?

Ich suchte auf Google, aber ich konnte etwas nicht klar finden, und die meisten Resultate benutzten alte docker-compose Version, die ich nicht kenne.

Vielen Dank im Voraus.

Antwort

1

Normalerweise hätten Sie einen separaten Webserver, der seinen eigenen Port freigibt und veröffentlicht (nicht auf 80).

Und Sie hätten einen dedizierten Listener (normalerweise ein NGiNX), um einen Reverse-Proxy zu gewährleisten, um die Abfrage je nach Pfad oder Port auf den richtigen Webserver umzuleiten.

http://www.bogotobogo.com/DevOps/Docker/images/Docker-compose-reverse-proxy-nginx/nginx-reverse-proxy-pic.png von K Hong.

Siehe zum Beispiel "Docker compose : NGINX reverse proxy with multiple containers"