【发布时间】:2021-05-09 20:54:09
【问题描述】:
我有一个在 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 中的
services下添加'host.docker.internal:host-gateway'作为extra_hosts:。它不起作用,但如果它起作用,我不确定它会如何影响 MacOS。
任何帮助将不胜感激。
【问题讨论】:
-
你不只是将 nodejs 作为服务添加到此 compose 文件中的服务中,以便球童可以通过
http://mynodejsservice访问它吗?
标签: docker docker-compose proxy windows-subsystem-for-linux caddy