5

Я пытаюсь настроить nginx на экземпляр Docker из эластичного бобового стежка, чтобы разрешить использование websockets. Используя найденную информацию here Я добавил .ebextensions/01_files.config к zip, который я развертываю..ebextensions with Docker on elasticbeanstalk

Почтовый индекс содержит .ebextensions/01_files.config, файл Dockerfile и tgz моего приложения.

Содержание 01_files.config является следующее:

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, казалось бы, игнорирует мои .ebextensions. Файл /etc/nginx/conf.d/websocketupgrade.conf никогда не записывается.

Каков правильный способ использования .ebextensions с контейнером Docker на эластичном бобовом стебле?

ответ

-1

Elastic Beanstalk теперь поддерживает докер с гораздо меньшим взломом, вы должны использовать Dockerfile and Dockerrun.aws.json.

Просто установите новый контейнер с изображением offical nginx и добавьте файл conf, который вы разместили выше. Затем потяните изображение nginx с помощью файла dockerrun (см. Пример ниже).

{ 
    "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

Извините, может быть, я не был чист, но я уже использую эластичный контейнерный контейнер Docker, как вы предлагаете. Nginx - это обратный прокси-сервер для докер-контейнера по умолчанию в контейнере для док-станции эластичного бобового стебля. Мне нужно настроить nginx для создания веб-узлов. Проблема в том, что эластичный beanstalk, кажется, игнорирует мои .ebextensions при развертывании. – imagio

+1

Убедитесь, что папка .ebextensions находится в архиве, который отправляется на Elastic Beanstalk. Похоже, что самое легкое решение состоит в том, чтобы добавить эту папку в ваш git-репо (eb-развертывание может выполнять git -archive под капотом, но не знаю). – januszm

0

Я уверен, что ElasticBeanstalk перезаписывает /etc/nginx/conf.d/ как часть настройки приложения, так что все вы положили там с ebextensions пропадет к тому времени начало приложение вверх.

Чтобы обойти это, вам необходимо внести изменения в промежуточную область, а не в конечный пункт назначения. Я не уверен, что плацдарм для развертывания elasticbeanstalk Nginx, но если вы посмотрите в

/var/log/eb-activity.log 

Вы должны быть в состоянии понять это.

Вы должны использовать:

container_command: 

директива, чтобы сделать изменения в промежуточной области.

Смежные вопросы