gpt4 book ai didi

docker - Docker 中的 WSL2 Caddy 反向代理

转载 作者:行者123 更新时间:2023-12-03 16:46:49 26 4
gpt4 key购买 nike

我有一个在 Docker 中运行的 Caddy 服务器与 Node.JS 服务器通信。此设置目前适用于 MacOS,但不适用于 WSL2。我认为这个问题与我们使用的事实有关 http://host.docker.internal:3000作为 Caddyfile 中的代理地址,但我不知道如何编写它,因此它适用于 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.internalhost-gateway .即使这确实有效,反过来也不允许它在 MacOS 上工作。
  • 添加 'host.docker.internal:host-gateway'extra_hosts:services在 docker-compose.yml 中。它不起作用,但如果它起作用,我不确定它会如何影响 MacOS。

  • 任何帮助,将不胜感激。

    最佳答案

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

    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记录:
    extra_hosts:
    - "host.docker.internal:10.50.0.20"
    不幸的是, gateway选项仅在版本 2 中受支持目前撰写文件规范,版本为 3您只能指定 subnet .如 gateway没有明确指定,它将是范围的第一个 IP 地址(对于上面的示例, 10.50.0.1)。
    配置不需要更改,除非您偶然发现 IP 范围重叠。换句话说,如果您将运行它的机器没有子网(docker 或其他),与您选择的范围重叠,则没有问题。否则,您可以选择另一个子网并在 extra_hosts 中写入不同的地址。 .
    另请注意,一旦创建了网络,就不允许更改 IPAM 配置。在创建新网络之前,您需要删除旧网络。使用 docker-compose downdocker network rm <network_name> .

    关于docker - Docker 中的 WSL2 Caddy 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66064557/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com