Джанго, нгинкс и ганкорн в Куберне

Я пытаюсь запустить приложение django в kubernetes. Я использую docker-compose для сборки приложения и nginx. Я могу запустить приложение, используя прокси-сервер nginx в docker compose.

сборка docker-compose - успешно

docker-compose up - успешно

http://aggre.mabh.io/ - успешно (возможность загрузить приложение)

Когда я пытаюсь развернуть образ приложения и nginx, я получаю сообщение об ошибке в панели управления Kubernetes, говоря

Ошибка в кубернетес

Модуль имеет несвязанные утверждения PersistentVolumeClaims (повторяется 2 раза) (как для nginx, так и для приложения)

Я использую Kompose для создания и развертывания приложения.

Как развернуть приложение в kubernetes и получить к нему доступ через внешнюю конечную точку nginx kubernetes?

докер-compose.yml

version: '3'
services:
  djangoapp:
    build: .
    image: sigmaaggregator/djangoapp
    labels:
      - kompose.service.type=NodePort
    volumes:
      - .:/djangoapp
      - static_volume:/djangoapp/static
    ports:
      - 4000:4000
    networks:
      - nginx_network

  nginx:
    image: nginx:1.13
    ports:
      - 80:80
    volumes:
      - ./config/nginx/conf.d:/etc/nginx/conf.d
      - static_volume:/djangoapp/static
    depends_on:
      - djangoapp
    networks:
      - nginx_network

networks:
  nginx_network:
    driver: bridge

volumes:
  static_volume:

Dockerfile

FROM python:3.6

RUN mkdir -p /djangoapp
WORKDIR /djangoapp
COPY . /djangoapp

RUN pip install -r requirements.txt

# copy our project code
RUN python manage.py collectstatic --no-input

CMD exec /bin/bash -c "trap : TERM INT; sleep infinity & wait"

# expose the port 4000
EXPOSE 4000

# define the default command to run when starting the container
CMD ["gunicorn", "--bind", ":4000", "aggre.wsgi:application"]

конфиг / Nginx/conf.d/local.conf

upstream hello_server {
   server djangoapp:4000;
}
server {
   listen 80;
   server_name aggre.mabh.io;

   location /static/ {
     alias /djangoapp/static/;
   }

   location / {
    proxy_pass http://hello_server;
    proxy_set_header Host $host;
    #proxy_ssl_server_name on;
    #proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
  }
}

1 ответ

Для статических файлов с django на кубернетах рассмотрите возможность использования whitenoise http://whitenoise.evans.io/en/stable/, чтобы предоставить здесь решение.

Это прямая рекомендация, но я потратил много времени на поиск, прежде чем нашел ссылку на нее.

Другие вопросы по тегам