首页 > 解决方案 > django 应用程序监听 localhost:8000 与 0.0.0.0:8000

问题描述

我有一个在 Google Kubernetes Engine 上运行的 Django 应用程序。如果我运行 enter the pod ,然后运行 ​​netstat -l 命令。它表明该服务正在监听 localhost:8000 在此处输入图像描述

我在 AWS 上的 Elastic Kubernetes 服务上运行了相同的服务。当容器在 localhost:8000 上侦听时,服务没有响应外部请求。我必须运行python manage.py runserver 0.0.0.0:8000,以便容器侦听所有网络接口。在 AWS 上, netstat -l 的输出如下所示 在此处输入图像描述

我想明白,那

  1. 为什么同一个应用程序在 google Kubernetes 引擎上运行,但不在 EKS 上,我必须专门定义在 0.0.0.0:8000 上监听。
  2. 当 netstat -l 显示它正在侦听 localhost:8000 时,为什么 google Kubernetes 引擎会侦听外部流量

码头工人文件:

FROM python:3.7.4

# Set environment variables
ENV PYTHONUNBUFFERED 1

COPY requirements.txt /

# Upgrade pip
RUN pip install --upgrade pip

# Install dependencies.
RUN pip install --no-cache-dir -r /requirements.txt

# Set work directory.
RUN mkdir /code
WORKDIR /code

# Copy project code.
COPY . /code/

# RUN python manage.py makemigrations && python manage.py migrate

# CMD export ENV_Setting=development && python manage.py makemigrations && python manage.py migrate && python manage.py runserver

我们在部署文件中启动应用程序:

command: ["bash", "-c", "export ENV_Setting=devs && python manage.py makemigrations && python manage.py migrate && python manage.py runscript custom_permissions_script && python manage.py runserver  0.0.0.0:8000"]

标签: pythondjangoamazon-web-serviceskubernetesgoogle-cloud-platform

解决方案


推荐阅读