我们正在尝试通过使用 Django Channels 2、AWS 和 Nginx + Daphne 在我们的网站上配置实时聊天。我们的设置在本地运行良好,但是在部署到生产环境时遇到了问题。
我们的生产环境由两个使用 Elastic Container Service (Fargate) 部署到 AWS 的 Docker 容器组成。前面运行的容器是一个 nginx 配置,充当代理服务器来提供静态文件。第二个容器运行我们的 API/Django 站点。代理在端口 8000 上运行,并将传入请求转发到在端口 9000 上运行的 API/Django 容器。我还将注意到,我们正在使用 terraform 来配置我们的 AWS 环境。
我参考了多篇完成类似设置的文章。例如: https: //medium.com/@elspanishgeek/how-to-deploy-django-channels-2-x-on-aws-elastic-beanstalk-8621771d4ff0
但是,此设置使用 Elastic Beanstalk 部署,但我们并未使用该部署。
代理 Dockerfile:
FROM nginxinc/nginx-unprivileged:1-alpine
LABEL maintainer='CodeDank'
COPY ./default.conf.tpl /etc/nginx/default.conf.tpl
COPY ./uwsgi_params /etc/nginx/uwsgi_params
ENV LISTEN_PORT=8000
ENV APP_HOST=app
ENV APP_PORT=9000
USER root
RUN mkdir -p /vol/static
RUN chmod 755 /vol/static
RUN touch /etc/nginx/conf.d/default.conf
RUN chown nginx:nginx /etc/nginx/conf.d/default.conf
COPY ./entrypoint.sh /entrypoint.sh
RUN …Run Code Online (Sandbox Code Playgroud)