На локальной тачке использую compose. Проектов несколько, есть проект с wildcard доменами. В основном в композе nginx и остальные :) Все сервисы проекта в 1-й сетке:
networks:
ph:
name: ph
ipam:
config:
- subnet: 192.168.221.0/28
Сервису с nginx всегда указываю статик ip:
networks:
ph:
ipv4_address: 192.168.221.6
B в hosts:
192.168.221.6 domain.loc api.domain.loc panel.domain.loc
Это не напрягает, но вот напряг когда поддоменов куча т.е *.domain.loc.
Решил использовать jwilder/nginx-proxy, вроде по мануалу как два пальца обсосать:
- создай контейнер с jwilder/nginx-proxy на порту 80:80
- прокинь в контейнер сокет докера
- создавай контейнеры с указанием в env VIRTUAL_HOST=.domain.loc 1. запихи контейнеры в одну сетку с контейнером прокси.
Но вот что-то не выходит аленький цветочек.
Создал контейнер с прокси, рестартанул контейнеры приложения, смотрю какой конфиг прокся собрала, а там:
upstream ph.loc {
# Cannot connect to network of this container
server 192.168.221.6 down;
}
server {
server_name ph.loc;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://ph.loc;
}
Вырубаю записи в /etc/hosts связанные со старой схемой работы топаю на домен ph.loc, не может зарезолвить записи dns. В hosts для домен ph.loc пишу 127.0.0.1 (но лят мне надо *.ph.loc, hosts так не умеет).
curl -I ph.loc #502 Bad Gateway
В логе контейнера proxy:
nginx.1 | 2020/02/13 11:08:09 [error] 73#73: *4 no live upstreams while connecting to upstream, client: 192.168.221.6, server: ph.loc, request: "GET /favicon.ico HTTP/1.1", upstream: "http://ph.loc/favicon.ico", host: "ph.loc", referrer: "http://ph.loc/"
- Почему апстирм «даун»?
- Что я делаю не так?
- Нужен ли мне dns с jwilder/nginx-proxy?
Вообще хотелось прийти к такой схеме работы когда проект разворашивают с нуля:
docker run ... jwilder/nginx-proxy && \
docker-composer ... up -d --build && \
curl -I ANY_DOMAINNAME # 200 Ok
А не лезть в hosts, настраивать локальный dns ставить статический ip контейнеру и т.д. Как достичь такого счастья?