intial commit

parents
### Miscellaneous
.Spotlight-V100
.Trashes
.DS_Store
.DS_Store?
ehthumbs.db
Thumbs.db
### Composer
composer.lock
/vendor/
### IDE
.idea/
*.cache
version: "3"
services:
letsencrypt-companion:
image: hamburml/docker-flow-letsencrypt:${DF_LE_VER:-0.1.5}
networks:
- proxy
environment:
- DOMAIN_1
- CERTBOT_EMAIL
- PROXY_ADDRESS=${PROXY_ADDRESS:-proxy}
- CERTBOT_CRON_RENEW=('0 3 * * *' '0 15 * * *')
volumes:
- certs:/etc/letsencrypt
deploy:
labels:
- com.df.servicePath=/.well-known/acme-challenge
- com.df.notify=true
- com.df.distribute=true
- com.df.port=80
placement:
constraints: [node.role == manager]
replicas: 1
networks:
proxy:
external: true
volumes:
certs:
driver: ${VOLUME_DRIVER:-vsphere}
version: "3"
services:
proxy:
image: vfarcic/docker-flow-proxy:${DF_PROXY_VER:-18.03.31-123}
ports:
- 80:80
- 443:443
networks:
- proxy
environment:
- LISTENER_ADDRESS=swarm-listener
- MODE=swarm
- CONNECTION_MODE=${CONNECTION_MODE:-http-keep-alive}
deploy:
replicas: 2
swarm-listener:
image: vfarcic/docker-flow-swarm-listener:${DF_SWARM_LISTENER_VER:-17.09.24-10}
networks:
- proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DF_NOTIFY_CREATE_SERVICE_URL=http://proxy:8080/v1/docker-flow-proxy/reconfigure
- DF_NOTIFY_REMOVE_SERVICE_URL=http://proxy:8080/v1/docker-flow-proxy/remove
deploy:
placement:
constraints: [node.role == manager]
networks:
proxy:
external: true
# Прокси для Docker Swarm
Docker Flow Proxy - простой и удобный прокси сервер (HAProxy), который автоматически переконфигурируется при создании/удалении новых сервисов.
Запускает сервисы:
1. **[Docker Flow Proxy](https://github.com/vfarcic/docker-flow-proxy)** - обрабатывает запросы, приходящие на хост на порты 80 и 443 + генерирует конфиг.
1. **[Docker Flow Swarm Listener](https://github.com/vfarcic/docker-flow-swarm-listener)** - следит за запуском/остановкой контейнеров на кластере, запускает (пере-)создание конфигов.
## Начало работы
### Как развернуть стек
1. Создать сеть `proxy` на кластере и задеплоить данный стек:
```bash
docker network create --driver overlay proxy
docker stack deploy -c proxy.yml proxy
```
Для дополнительной конфигурации можно указать переменные окржения:
- `DF_PROXY_VER` - Версия образа [Docker Flow Proxy](https://github.com/vfarcic/docker-flow-proxy)
- `DF_SWARM_LISTENER_VER` - Версия образа [Docker Flow Swarm Listener](https://github.com/vfarcic/docker-flow-swarm-listener)
- `CONNECTION_MODE` - режим соединения, по-умолчанию http-keep-alive
### Как подключить проект к прокси
В конфиге проекта `docker-compose.yml` указать внешнюю сеть `proxy`:
```yml
networks:
proxy:
external: true
```
Для контейнера с веб-сервером (nginx, apache, etc) необходимо указать сети:
```yml
networks:
- default
- proxy
```
`default` - чтобы для доступа к контейнерам в сети проекта
`proxy` - для участия в прокси
А также в зоне `deploy` указать лейблы:
```yml
deploy:
replicas: 1
labels:
- com.df.notify=true
- com.df.distribute=true
- com.df.serviceDomain=domain.com
- com.df.servicePath=/
- com.df.srcPort=80
- com.df.port=8000
```
Пример выше будет обрабатывать **http** запросы (порт 80) с домена **domain.com** в сервис с порта *8000* по пути `/`.
Подробнее о лейблах для [Docker Flow Proxy](http://proxy.dockerflow.com/usage/#general-http-query-parameters)
## Let's Encrypt
Для автоматической генерации SSL-сертификатов через Let's Encrypt, можно использовать решение [`hamburml/docker-flow-letsencrypt`](https://github.com/hamburml/docker-flow-letsencrypt)
### Пример использования
```bash
CERTBOT_EMAIL=1119@zolotoykod.ru DOMAIN_1=('demo.zolotoykod.ru') docker stack deploy -c letsencrypt.yml letsencrypt
```
- `DF_LE_VER` - Версия `hamburml/docker-flow-letsencrypt`, по-умолчанию `0.1.5`
- `VOLUME_DRIVER` - драйвер тома под хранение сертификатов, по-умолчанию `vsphere`
- `DOMAIN_1` - домены, для которых генерировать сертификаты
- `CERTBOT_EMAIL` - email для certbot
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment