Docker 中的 WSL2 Caddy 反向代理

问题描述

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

docker-compose.yml:

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:

球童档案

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。

任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)