LINUX.ORG.RU
ФорумAdmin

Динамическая конфигурация nginx в docker

 ,


0

1

Привет

Хочу такое, чтобы в конфигурацию nginx при запуске docker подставлялась переменная из .env

location /backend {
    proxy_pass https://$BACKEND_ADDRESS;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    }

Если я просто скопирую конфиг с таким текстом, чтобы переменная $BACKEND_ADDRESS заменилась на нужный адрес, оно же не сработает, а как сделать чтобы заработало пока ищу.

Может кто делал такое, я такое точно видел но не опмню подробностей


Я просто дам кусок docker-compose файла. Юзать или нет - решайте сами. Я давно просто копирую между проектам, слегка изменяя.

environment:
      - NGINX_DOMAIN_NAME=${HOSTNAME}
      - VIRTUAL_HOST=${HOSTNAME}
      - LETSENCRYPT_HOST=${HOSTNAME}
      - LETSENCRYPT_EMAIL=${EMAIL}
command: bash -c "envsubst '$${NGINX_DOMAIN_NAME}' < /etc/nginx/conf.d/sberlogistics.template > /etc/nginx/conf.d/sberlogistics.conf && nginx -g 'daemon off;'"
Сам где-то нагуглил уже давно.

cadogan
()
Последнее исправление: cadogan (всего исправлений: 1)
Ответ на: комментарий от Hanuken

а кстати этот способ с sed не подходит, так как оно работает на этапе сборки, а мне надо чтобы при запуске работало

то есть на этапе сборки никаких переменных же еще нет, они приезжают когда волт читается и тогда надо чтобы подставлялось

user13
() автор топика

посмотри на скрипт запуска контейнера

docker-compose exec nginx cat /docker-entrypoint.sh

там запускается обработка скриптов из /docker-entrypoint.d/, а туда можно прикрутить что угодно

fMad ★★★
()
31 октября 2023 г.

В официальном docker-образе nginx уже же есть:

https://hub.docker.com/_/nginx

Using environment variables in nginx configuration (new in 1.19) Out-of-the-box, nginx doesn’t support environment variables inside most configuration blocks. But this image has a function, which will extract environment variables before nginx starts.

FireFighter ★★★
()
Последнее исправление: FireFighter (всего исправлений: 1)