5

Próbuję skonfigurować nginx na elastycznej instancji Docker beanstalk, aby umożliwić korzystanie z websockets. Wykorzystując znalezione informacje, dodałem plik .ebextensions/01_files.config do zainstalowanego zipa..rozszerzenia z Dockerem na elastycznej skórze sprężystej

Plik zip zawiera .ebextensions/01_files.config, plik Docker i plik tgz mojej aplikacji.

Zawartość 01_files.config jest następujący:

files: 
    "/etc/nginx/conf.d/websocketupgrade.conf" : 
     mode: "000755" 
     owner: root 
     group: root 
     content: | 
      proxy_set_header  Upgrade   $http_upgrade; 
      proxy_set_header  Connection  "upgrade"; 

Elastic beanstalk pozornie ignoruje moje .ebextensions. Plik /etc/nginx/conf.d/websocketupgrade.conf nigdy nie jest zapisywany.

Jaki jest poprawny sposób użycia .rozszerzeń z pojemnikiem Dockera na elastycznej fasoli?

Odpowiedz

-1

Elastic Beanstalk obsługuje teraz dokowanie z dużo mniejszym hackowaniem, powinieneś używać Dockerfile and Dockerrun.aws.json.

Wystarczy oprzeć nowy pojemnik na zdjęciu offical nginx i dodać plik conf, który podałeś powyżej. Następnie pobierz obraz nginx za pomocą pliku dockerrun (zobacz przykład poniżej).

{ 
    "AWSEBDockerrunVersion": "1", 
    "Authentication": { 
    "Bucket": "my-bucket", 
    "Key": "mydockercfg" 
    }, 
    "Image": { 
    "Name": "me/my-nginx-image", 
    "Update": "true" 
    }, 
    "Ports": [ 
    { 
     "ContainerPort": "80" 
    } 
    ], 
    "Volumes": [ 
    { 
     "HostDirectory": "/var/", 
     "ContainerDirectory": "/etc/mysql" 
    } 
    ], 
    "Logging": "/var/log/nginx" 
} 
+0

Przepraszam, może nie było jasne, ale już używam typ pojemnika Docker elastycznej beanstalk, jak sugerujesz. Nginx jest domyślnym odwrotnym proxy do kontenera dokera w elastycznym pojemniku dokera beanstalk. Muszę skonfigurować nginx, aby zezwalać na websockets. Problem polega na tym, że elastyczny beanstalk wydaje się ignorować moje .ebextensions podczas wdrażania. – imagio

+1

Upewnij się, że folder .ebextensions znajduje się w archiwum wysyłanym do Elastic Beanstalk. Wydaje się, że najłatwiejszym rozwiązaniem jest dodanie tego folderu do repozytorium git (eb wdrożyć może robić git --archive under the hood, dunno). – januszm

0

Jestem pewien, że ElasticBeanstalk nadpisuje /etc/nginx/conf.d/ jako część skonfigurować aplikację, więc wszystko można umieścić tam z ebextensions zniknie w momencie uruchomieniu aplikacji w górę.

Aby obejść ten problem, należy wprowadzić zmiany w obszarze przemieszczania, a nie w miejscu docelowym. Nie jestem pewien, co obszar staging jest dla wdrożeń elasticbeanstalk nginx, ale jeśli spojrzeć w

/var/log/eb-activity.log 

powinien być w stanie zrozumieć.

należy użyć:

container_command: 

dyrektywy do wprowadzania zmian w obszarze pomostowym.

Powiązane problemy