2017-01-21 2 views
0

장래에 도커 - 머신으로 여러 사이트를 호스팅해야하지만 localhost에서 시작하려고합니다.Docker NGINX 이미지로 도메인 이름을 가진 컨테이너 몇 개를 제공하는 방법

127.0.0.1 localhost 
255.255.255.255 broadcasthost 

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

이 구성은 독립적으로 선택된 도메인과 사이트 나에 대한 액세스를 제공합니다

주요 목적은 물론 나는 아래에 나열되어, OS X 내 /etc/hosts 파일을 시작할 필요가 특정 사이트를 얻을 수 있습니다 의 DNS 설정.

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: 

두 사이트 컨테이너 localhost:8000localhost:8003에 완벽하게 작동하고 아래에있는 내 nginx/volume 폴더 트리입니다 : 내 Nginx의 구성에 영향을 미칠 수있는 유일한 방법은 그래서

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 

지금은 내 docker-compose.yml가 보여 드리죠 아래 conf.d 디렉토리에 .conf 파일을 배치하고 그들 모두 :

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; 
     } 
} 

그리고 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; 
    } 
} 

답변

0

conf.d에서 이름 바꾸기의 nginx 설정 파일과 해결 문제. nginx.conf 기본적으로이 문자열이 있기 때문에 그들은 .conf 확장자로 끝나야합니다 : 나는 마운트하거나 더 편리 있다면 우리의 설정을 복사 할 수 있습니다 물론

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

을,하지만 난 기본 경로를 선호합니다.