Всем доброго дня. Подскажите, как узнать реальный ip клиента в веб-сервере внутри docker-контейнера? Сейчас в логах ip докера, а не реального клиента.
network_mode: host не помогает, мало того, сервер в этом случае вообще не стартует (listen tcp4 192.168.0.104:80: bind: cannot assign requested address, хотя в файле hosts хоста все казано корректно), но если слушать на локалхосте, то сервер становится недоступен с хоста и из сети вообще.
У хоста IP 192.168.0.104, у докера 172.17.32.1.
Файл hosts:
192.168.0.104 ivankprod.ru
192.168.0.104 www.ivankprod.ru
Файл docker-compose.yml:
version: '3.8'
services:
certbot:
container_name: ikpru_certbot
image: certbot/certbot
restart: unless-stopped
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
volumes:
- ./data/certbot:/etc/letsencrypt
tarantool:
container_name: ikpru_tarantool
image: tarantool/tarantool:2.8
environment:
TARANTOOL_PORT: ${DB_TARANTOOL_PORT:-3301}
TARANTOOL_USER_NAME: ${DB_TARANTOOL_USER:-nothing}
TARANTOOL_USER_PASSWORD: ${DB_TARANTOOL_PASSWORD:-nothing}
command: tarantool /usr/local/share/tarantool/app.lua
ports:
- "${DB_TARANTOOL_PORT:-3301}:${DB_TARANTOOL_PORT:-3301}"
volumes:
- ./tarantool/app:/usr/local/share/tarantool
- ./tarantool/data:/var/lib/tarantool
app:
container_name: ikpru_app
build: .
image: ivankprodru_app
restart: on-failure
env_file:
- ${STAGE_MODE:-prod}.env
command: bash -c "cd ./home/app && ./server"
ports:
- "${SERVER_PORT_HTTP:-80}:${SERVER_PORT_HTTP:-80}"
- "${SERVER_PORT_HTTPS:-443}:${SERVER_PORT_HTTPS:-443}"
volumes:
- ./build_${STAGE_MODE:-prod}:/home/app
- ./data/certbot:/etc/letsencrypt
links:
- tarantool:${DB_TARANTOOL_HOST:-tarantool}
depends_on:
- certbot
- tarantool