2017-01-21 1 views
0

J'ai besoin d'héberger plusieurs sites avec ma docker-machine à l'avenir, mais je sais que je suis en train de le lancer sur localhost.Comment servir des conteneurs de couple avec des noms de domaine avec l'image Docker NGINX

Le but principal est d'obtenir certain site, bien sûr, je dois commencer par mon fichier /etc/hosts sur OS X, ci-dessous est l'annonce:

127.0.0.1 localhost 
255.255.255.255 broadcasthost 

127.0.0.1  dev.proling.ru 
127.0.0.1  dev.vshvetsov.ru 

Cette configuration offre pour moi l'accès aux sites avec des domaines choisis indépendamment des paramètres DNS. Maintenant, je vais vous montrer mes docker-compose.yml:

version: '2' 

services: 
    mysql: 
    build: mysql/ 
    restart: always 
    volumes: 
     - mysql_data:/var/lib/mysql 
    container_name: mysql 
    vshvetsov: 
    depends_on: 
     - mysql 
    build: vshvetsov/ 
    ports: 
     - 8000:80 
    restart: always 
    container_name: vshvetsov 
    proling: 
    depends_on: 
     - mysql 
    build: proling/ 
    ports: 
     - 8003:80 
    restart: always 
    container_name: proling 
    nginx: 
    depends_on: 
     - proling 
     - vshvetsov 
    image: nginx 
    restart: always 
    ports: 
    - "80:80" 
    volumes: 
    - ./nginx/volume:/etc/nginx 
    container_name: nginx 
volumes: 
    mysql_data: 

Les deux conteneurs de site fonctionne parfaitement sur localhost:8000 et localhost:8003 et ci-dessous est mon arbre nginx/volume dossier:

volume 
    ├── conf.d 
    │   ├── default.conf 
    │   ├── proling.ru 
    │   └── vshvetsov.ru 
    ├── fastcgi_params 
    ├── koi-utf 
    ├── koi-win 
    ├── mime.types 
    ├── modules -> /usr/lib/nginx/modules 
    ├── nginx.conf 
    ├── scgi_params 
    ├── uwsgi_params 
    └── win-utf 

La seule façon d'avoir un impact sur ma configuration nginx est de mettre .conf fichiers dans le répertoire et conf.d ci-dessous sont tous les deux:

dev.proling.ru

server { 
    listen 80; 
    server_name www.proling.ru; 
    rewrite^http://proling.ru$request_uri? permanent; #301 redirect 
} 

server { 
    listen 80; 

    server_name proling.ru *.proling.ru; 

     location/{ 

      proxy_pass http://proling; 
      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection 'upgrade'; 
      proxy_set_header Host $host; 
      proxy_cache_bypass $http_upgrade; 

      access_log /var/log/nginx/proling.ru-access.log; 
     } 
} 

Et dev.vshvetsov.ru

server { 
    listen 80; 

    server_name www.vshvetsov.ru vshvetsov.ru dev.vshvetsov.ru; 

    location/{ 
     proxy_pass http://vshvetsov; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
     access_log /var/log/nginx/vshvetsov.ru-access.log; 
    } 
} 

Répondre

0

Le problème résolu avec les fichiers de configuration renommage nginx dans conf.d. Ils doivent se terminer par l'extension .conf car nginx.conf ont cette chaîne par défaut:

include /etc/nginx/conf.d/*.conf; 

Bien sûr, je peux monter ou copier notre config s'il est plus pratique, mais je préfère chemin par défaut.