docker proxy Поддомены/домены для разных контейнеров
Primary tabs
Пример конфигурации для nginxproxy/nginx-proxy:
docker-compose.yml с конфигом для прокси:
version: '3.9' services: nginx-proxy: container_name: nginx-proxy-double-test-proxy image: nginxproxy/nginx-proxy ports: - "8888:80" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxynet networks: proxynet: name: custom_network
Отдельный docker-compose-app.yml для приложения, например:
version: '3.9' services: whoami: container_name: nginx-proxy-double-test-app image: jwilder/whoami expose: - "8000" environment: - VIRTUAL_HOST=whoami-second-compose.local - VIRTUAL_PORT=8000 networks: - proxynet networks: proxynet: name: custom_network external: true
Makefile c командами для теста (или можно выполнять напрямую в терминале):
start: docker-compose -f ./docker-compose.yml up -d docker-compose -f ./docker-compose-app.yml up -d stop: docker-compose -f ./docker-compose.yml stop docker-compose -f ./docker-compose-app.yml stop test.proxy: curl -H "Host: whoami-second-compose.local" localhost:8888 sleep: sleep 1 retest: stop start sleep test.proxy
Источники:
- Основная идея - Communication between multiple docker-compose projects: https://stackoverflow.com/a/48024244
- https://stackoverflow.com/questions/3618...
- https://github.com/nginx-proxy/nginx-proxy
- Log in to post comments
- 613 reads
vedro-compota
Sat, 04/22/2023 - 22:06
Permalink
черновик (не проверено)
Если у вас есть несколько файлов docker-compose.yml,
вы можете использовать функционал docker-compose --project-name
для создания проектов с разными именами для каждого файла.
Например, у вас может быть файл docker-compose-app1.yml,
содержащий настройки для app1, и файл docker-compose-app2.yml,
содержащий настройки для app2.
В таком случае вы можете запустить контейнер jwilder/nginx-proxy
с параметром --project-name для каждого файла, чтобы создать отдельные проекты:
css
При этом jwilder/nginx-proxy запускается один раз,
но для каждого проекта создается свой сетевой пространство
и DNS-сервер, что позволяет использовать разные домены для каждого проекта.
Пример docker-compose.yml файла для jwilder/nginx-proxy, который поддерживает два проекта app1 и app2, может выглядеть так:
Пример docker-compose-app1.yml файла для app1 может выглядеть так:
А пример docker-compose-app2.yml файла для app2 может выглядеть так:
Обратите внимание, что в каждом файле docker-compose-app1.yml
и docker-compose-app2.yml используется отдельное имя сети,
которое является внешним для контейнеров,
и уже определено в файле docker-compose.yml.
Это позволяет контейнерам приложений быть доступными только в своих проектах
_____________
матфак вгу и остальная классика =)