Используя docker, я создал 3 django проектов: - продукты, заказы, электронная почта.
поддерживающие технологии: - nginx и postgres.
Здесь каждый проект работает как микросервис для работы каждого сервиса как отдельная единица.
Мне нужно получить сведения о продукте из службы заказов , для этого я использовал конвейер запросов
orders / src / views.py
response = requests.get("http://products_web:8001/products/fetch/?prod_id=%s" % product).json()
при выполнении я получаю ответ в формате html, определяющем ошибку как Значение исключения: недопустимый заголовок HTTP_HOST: 'products_web: 8001'. Указанное доменное имя недопустимо в соответствии с RF C 1034/1035.
следующее docker -compose.yaml
version: '2'
services:
products_web:
build: ./products
command: bash -c "python3 ./products/manage.py makemigrations && python3 ./products/manage.py migrate && python3 ./products/manage.py runserver 0.0.0.0:8001"
volumes:
- .:/code
ports:
- "8001:8001"
restart: always
depends_on:
- datab
links:
- datab
emails_web:
build: ./emails
command: bash -c "python3 ./emails/manage.py makemigrations && python3 ./emails/manage.py migrate && python3 ./emails/manage.py runserver 0.0.0.0:8002"
volumes:
- .:/code
ports:
- "8002:8002"
restart: always
depends_on:
- datab
links:
- datab
orders_web:
build: ./orders
command: bash -c "python3 ./orders/manage.py makemigrations && python3 ./orders/manage.py migrate && python3 ./orders/manage.py runserver 0.0.0.0:8003"
volumes:
- .:/code
ports:
- "8003:8003"
restart: always
depends_on:
- datab
links:
- datab
stdin_open: true
tty: true
datab:
image: postgres
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
nginx:
image: nginx:latest
build: ./web
ports:
- "8084:80"
links:
- products_web
- orders_web
- emails_web
depends_on:
- products_web
- orders_web
- emails_web
следующее nginx .conf
server {
listen 8000;
server_name 0.0.0.0;
charset utf-8;
location /api/v1/products {
rewrite /api/v1/products(.*) /products$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://products_web:8001;
}
location /api/v1/emails {
rewrite /api/v1/emails(.*) /emails$1 break;
proxy_pass http://emails_web:8002;
proxy_redirect off;
proxy_set_header Host $host;
}
location /api/v1/orders {
rewrite /api/v1/orders(.*) /orders$1 break;
proxy_pass http://orders_web:8003;
proxy_redirect off;
proxy_set_header Host $host;
}
}