windows 10,窗口对接,使用nginx和ssl的简单webapp。
当使用VM的时候很简单。我有三台虚拟机。每台机器都有由路由器分配的静态ip。在主机文件中,我可以将ips映射到主机名,这样我就可以使用名称来在VM之间进行组合: api1.mydev、api2.mydev、application.mydev。当然,所有系统都可以访问网络父级的其他部分。这件简单的事情花了我几天的时间在码头上,没有任何进展。
构建码头映像/容器非常简单,而且它们在自定义端口上工作,因此localhost:443工作起来就像一种危害。我找不到办法:
我尝试过nginx代理,但它给我带来了502个错误。我已经找到了特雷菲克,但我不是网络专家,配置看起来对新手来说太过了。
我考虑的选项是将所有服务放在一个容器上,并使用nginx解析名称,但是这种方法与单个VM机器相比并没有真正的优势,也违背了docker哲学。
有更简单的方法来实现这一点吗?我觉得我错过了码头配置的东西。
发布于 2021-10-02 17:05:20
我一直在用traefik来实现这个目标。
version: '3.7'
services:
traefik:
image: traefik:latest
container_name: traefik
command: --api --docker --docker.domain=${DOMAIN:localhost} --logLevel=DEBUG
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.backend=traefik"
- "traefik.frontend.rule=Host:traefik.${DOMAIN:localhost}"
- "traefik.port=8080"
app-account:
container_name: app-account
depends_on:
- traefik
labels:
- "traefik.backend=account"
- "traefik.frontend.rule=Host:account.${DOMAIN:localhost}"
- "traefik.frontend.headers.customRequestHeaders=Access-Control-Allow-Origin: *"
在这里,${DOMAIN}
仅用于重写shell中的域--如果您要在生产中使用这个组合文件,比如在Docker中。如果您只在本地使用它,那么只需将${DOMAIN:localhost}替换为localhost
。使用这个docker -组合文件启动docker,您可以通过app-account
访问这个特定的account.localhost
应用程序。
https://devops.stackexchange.com/questions/14764
复制