首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头WSL2 Caddy逆向代理

码头WSL2 Caddy逆向代理
EN

Stack Overflow用户
提问于 2021-02-05 13:53:51
回答 1查看 1.1K关注 0票数 5

我在Docker中运行了一台Caddy服务器,并与一台Node.JS服务器通信。此设置目前在MacOS上工作,但在WSL2上不工作。我认为这个问题与我们在MacOS文件中使用http://host.docker.internal:3000作为代理地址有关,但我不知道如何编写它,因此它可以在WSL2和MacOS上工作。

docker-compose.yml:

代码语言:javascript
复制
version: '3.7'
services:
  caddy:
    image: 'abiosoft/caddy:latest'
    volumes:
      - ./certs:/root/certs # to sync mkcert certificates to Caddy
      - ./Caddyfile:/etc/Caddyfile # to mount custom Caddyfile
    ports:
      - '443:2015'
  db:
    container_name: service_local_db
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: 'service_local'
      MYSQL_ROOT_PASSWORD: '******'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - database_volume:/var/lib/mysql
volumes:
  database_volume:

卡迪文件

代码语言:javascript
复制
servicename.url{
    log stdout
    tls /root/certs/servicename.local.pem /root/certs/servicename.local-key.pem

    proxy / http://host.docker.internal:3000 {
        websocket
        transparent
        header_upstream X-Marotagem  true
        header_upstream Host  "servicename.local"
    }
}

我试过:

  • host.docker.internal转换为host-gateway。即使这样做确实有效,它也会相反地不允许它在MacOS上工作。
  • 在docker-compose.yml中将'host.docker.internal:host-gateway'作为extra_hosts:添加到services中。它不起作用,但如果起作用,我不确定它将如何影响MacOS.

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-02-15 07:10:56

AFAIK host.docker.internal还没有(?)在Linux的Docker中实现。但是,由于您使用的是bridge网络(默认网络),您可以为主机创建类似于静态IP地址的内容。之后就不需要使用host.docker.internal了,不过如果您愿意的话,您可以将它添加到带有extra_hosts的容器中。

代码语言:javascript
复制
version: "2"
networks:
  default:
    ipam:
      driver: default
      config:
          # (mandatory) IP-address range for the containers
        - subnet: "10.50.0.0/24"
          # (optional) IP-address of the host
          # if not specified it will be the first IP-address of the subnet (10.50.0.1 in this case)
          gateway: 10.50.0.20
          # 'gateway' is only available in docker-compose version 2 at the moment

在本例中,gateway将是该网络中容器的主机IP地址。您可以使用此值创建一个工作的extra_hosts记录:

代码语言:javascript
复制
extra_hosts:
- "host.docker.internal:10.50.0.20"

不幸的是,gateway选项目前只支持在版本2组合文件规范中,使用版本3,您只能指定subnet。如果没有显式地指定gateway,它将是范围的第一个IP地址(上面的例子是10.50.0.1)。

配置不需要更改,除非您无意中遇到IP范围重叠。换句话说,如果您要运行的机器没有子网(停靠或其他),与您选择的范围重叠,那么就没有问题了。否则,您可以选择另一个子网并在extra_hosts中写入不同的地址。

还请注意,一旦创建了网络,就不允许对IPAM配置进行更改。在创建新网络之前,需要删除旧网络。使用docker-compose downdocker network rm <network_name>

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

https://stackoverflow.com/questions/66064557

复制
相关文章

相似问题

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