Docker compose 如何在docker compose文件中配置Caddy 2,以便在没有绑定挂载的Caddy文件的情况下执行反向代理?
我有一个docker compose文件,其中包含两个服务:Docker compose 如何在docker compose文件中配置Caddy 2,以便在没有绑定挂载的Caddy文件的情况下执行反向代理?,docker-compose,caddy,Docker Compose,Caddy,我有一个docker compose文件,其中包含两个服务: 我的webapp,它公开了3000端口 caddy,它可以作为我的web应用程序的反向代理,并提供HTTPS 如果我使用绑定挂载的Caddyfile,它可以正常工作: caddy: image: caddy:2.0.0-alpine ports: - 80:80 - 443:443 volumes: - caddy:/data - .Caddyfile:/et
- 我的webapp,它公开了3000端口
- caddy,它可以作为我的web应用程序的反向代理,并提供HTTPS
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(docker compose exec caddy caddy reverse proxy——从my-site.net——到我的应用程序: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
这可能会引起兴趣: 根据它引用的github repo中的描述,它的工作原理是扫描Docker元数据,寻找指示服务或容器应该在caddy上公开的标签 然后,它生成一个内存中的CADDY文件,其中包含指向每个Docker服务DNS名称或容器IP的网站条目和代理指令
每次docker对象发生更改时,它都会更新caddy文件并触发caddy零停机重新加载。我肯定不是docker专家,所以请不要相信我的话,但在
服务/caddy
部分,您可以指定一个选项,用于指定要传递给caddy
命令的参数。