У меня есть файл docker-compose с двумя службами:
- мое веб-приложение выставляет порт 3000
- caddy, он работает как обратный прокси для моего веб-приложения и дает HTTPS
Он отлично работает, если я использую Caddyfile с привязкой:
caddy:
image: caddy:2.0.0-alpine
ports:
- 80:80
- 443:443
volumes:
- caddy:/data
- .Caddyfile:/etc/caddy/Caddyfile
Файл Caddy довольно прост:
my-domain.com {
reverse_proxy my-app:3000
}
Но я хотел бы развернуть его на сервере без загрузки Caddyfile. Я хочу настроить свой docker-compose.yml примерно так:
version: "3"
services:
my-app:
image: my-app
expose:
- 3000
caddy:
image: caddy:2
ports:
- 80:80
- 443:443
environment:
- reverse_proxy_from=my-app:3000
- reverse_proxy_to=my-domain.com
volumes:
- caddy:/data
volumes:
caddy:
Также, возможно, это можно сделать через Caddy API. Когда я попытался настроить обратный прокси-сервер на голой ОС, он работает. Но когда я попытался сделать это с помощью докера (docker-compose exec caddy caddy reverse-proxy --from my-site.net --to my-app:3000
), я получил некоторые непонятные мне сообщения об ошибках:
root@test:/xxx# docker-compose exec caddy caddy reverse-proxy --from my-site.net --to app:3000
2020/05/15 11:49:57.787 WARN admin admin endpoint disabled
2020/05/15 11:49:57.787 INFO http server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS {"server_name": "proxy", "https_port": 443}
2020/05/15 11:49:57.787 INFO http enabling automatic HTTP->HTTPS redirects {"server_name": "proxy"}
2020/05/15 11:49:57 [INFO][cache:0xc000726820] Started certificate maintenance routine
2020/05/15 11:49:57.788 INFO tls cleaned up storage units
reverse-proxy: loading new config: http app module: start: tcp: listening on :80: listen tcp :80: bind: address already in use
services/caddy
вы можете указатьcommand
для указания аргументов для передачи командеcaddy
. - person λuser   schedule 24.05.2020