Я развертываю приложение django в эластичном beanstalk и докере, используя nginx и uwsgi.
Ниже представлен файл Dockerfile:
FROM ubuntu:14.04
MAINTAINER Nijo James
# Update packages
RUN apt-get update -y
#Install python Setuptools
RUN apt-get install -y python python-dev python-setuptools python-software-properties
RUN apt-get install -y libpq-dev
RUN apt-get install -y supervisor
RUN apt-get install -y libxml2-dev libxslt1-dev zlib1g-dev
RUN apt-get install -y build-essential libssl-dev libffi-dev
#TO install pillow
RUN apt-get install -y libjpeg-dev
# update packages after adding nginx repository
RUN apt-get update
# install latest stable nginx
RUN apt-get install -y nginx
#setup redis-server
RUN apt-get install -y redis-server
#Install pip
RUN easy_install pip
# Install uwsgi
RUN pip install uwsgi
# copy the contents of this directory over to the container at location /src
ADD . /home/docker/src/
# run pip install
RUN pip install -r /home/docker/src/server/requirements.txt
# Customize configurations
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN rm /etc/nginx/sites-enabled/default
RUN rm /etc/nginx/sites-available/default
RUN ln -s /home/docker/src/server/nginx-app.conf /etc/nginx/sites-enabled/
RUN ln -s /home/docker/src/server/supervisor-app.conf /etc/supervisor/conf.d/
RUN mkdir -p /home/docker/src/server/logs/
EXPOSE 80
#Run command
cmd ["/home/docker/src/server/start.sh"]
Но когда я пытаюсь получить к нему доступ через Интернет, я получаю 502 Bad Gateway
.
И я получаю ту же ошибку, когда пытаюсь cURL IP Docker.
В журнале ошибок Elastic Beanstalk есть следующие ошибки:
[error] 29386#0: *1986 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.43.60, server: , request: "GET / HTTP/1.1", upstream: "http://[dockerip]:80/", host: "xxxxxxxxxxxxx.elasticbeanstalk.com"
вот моя конфигурация nginx:
upstream django
{
server unix:/tmp/api.sock; # for a file socket
}
server
{
listen 80 default_server;
charset utf-8;
# max upload size
client_max_body_size 4G; # adjust to taste
location / {
uwsgi_pass django;
include /home/docker/src/server/uwsgi_params; # the uwsgi_params file you installed
}
sendfile off;
access_log /home/docker/src/server/logs/nginx-access.log;
error_log /home/docker/src/server/logs/nginx-error.log;
Журнал ошибок uwsgi из докера:
текущий рабочий каталог: / home / docker / src / server
обнаруженный двоичный путь: / usr / local / bin / uwsgi
!!! нет поддержки внутренней маршрутизации, перестройте с поддержкой pcre !!!
uWSGI работает как root, вы можете использовать --uid / - gid / - chroot options
* ВНИМАНИЕ: вы запускаете uWSGI как root !!! (используйте флаг --uid) * chdir () в / home / docker / src / server /