首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在坞-组合文件中配置Caddy 2,使其在没有绑定挂载的情况下执行反向代理?

如何在坞-组合文件中配置Caddy 2,使其在没有绑定挂载的情况下执行反向代理?
EN

Stack Overflow用户
提问于 2020-05-15 11:24:03
回答 2查看 31K关注 0票数 9

我有一个带有两个服务的坞-撰写文件:

  • my webapp,它公开端口3000
  • caddy,作为我的web应用程序的反向代理,并给出HTTPS

如果我使用绑定挂载的Caddyfile,它可以正常工作:

代码语言:javascript
复制
caddy:
    image: caddy:2.0.0-alpine
    ports:
      - 80:80
      - 443:443
    volumes:
      - caddy:/data
      - .Caddyfile:/etc/caddy/Caddyfile

卡迪文件非常简单:

代码语言:javascript
复制
my-domain.com {
    reverse_proxy my-app:3000
}

但是我想在服务器上部署它,而不上传Caddyfile。我想配置我的docker-compose.yml,如下所示:

代码语言:javascript
复制
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来实现这一点。当我试图在裸操作系统上配置逆代理时,它可以工作。但是,当我试图用docker (docker-compose exec caddy caddy reverse-proxy --from my-site.net --to my-app:3000)做这件事时,我收到了一些不清楚的错误信息:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2020-05-28 18:27:46

这可能令人感兴趣:

https://hub.docker.com/r/lucaslorentz/caddy-docker-proxy

根据它引用的github中的描述,它是如何工作的:它扫描Docker元数据,寻找指示服务或容器应该在caddy上公开的标签。

然后生成内存中的Caddyfile,其中包含指向每个Docker服务、DNS名称或容器IP的网站条目和代理指令。

每当停靠器对象更改时,它都会更新caddy文件,并触发caddy零停机时间重新加载。

票数 7
EN

Stack Overflow用户

发布于 2021-07-05 07:44:34

@ command用户是对的,您可以重写一个λ选项并实现您的目标:

代码语言:javascript
复制
caddy:
    image: caddy:2.4.3-alpine
    restart: unless-stopped
    command: caddy reverse-proxy --from https://my-domain.com:443 --to http://my-app:3000
    ports:
      - 80:80
      - 443:443
    volumes:
      - caddy:/data
    depends_on:
      - my-app

我收到了一些不清楚的错误信息

侦听tcp :80:绑定:已在使用的地址

释放端口80,你就可以走了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61818066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档