我觉得我忽略了一些显而易见的事情,因为到目前为止,我的解决方案/想法似乎太麻烦了。我一直在努力寻找一个好的解决方案,但到目前为止没有成功--可能是因为我不知道该找什么。
问题:如何与远程服务器上运行在不同容器(同一码头网络内)的web服务器的图形界面进行交互,给出这些容器之间的URL重定向?
初始情况:在我的主机(Azure-VM)上运行两个容器(一个Flask应用程序和一个运行OpenAM的Tomcat服务器)。
到目前为止,我已经使用ssh端口转发在本地计算机上配置了OpenAM。
问题:这个Flask应用程序通过其在docker中定义的域名引用OpenAM,反之亦然。我把容器的港口转到本地的机器上。Flask应用程序正在运行,我可以在浏览器中与它交互。当我在本地机器上被重定向到OpenAM时,系统就会失败,因为对OpenAM容器的引用是特定于Docker网络的。另外,OpenAM容器的端口也是不同的。换句话说,这两个网络之间的路由是不存在的。
解决方案构想:
简化码头-合成:
version: "3.4"
services:
openam:
image: openidentityplatform/openam
ports:
- 5001:8080
command: /usr/local/tomcat/bin/catalina.sh run
flask:
build: ./SimpleHTTPServer
ports:
- 5002:8000
command: python -m http.server 8000发布于 2021-01-03 11:36:35
一个更好的解决方案是干净的、简单的,并且在不同的虚拟机上运行应用程序的部分时也能完美地工作。
设置并使用SSH SOCKS隧道
对于和macOS:
$ ssh -N -D 9090 [USER]@[SERVER_IP]New Profile > Proxy Profile,单击create,输入与ssh命令和端口9090相同的服务器IP。"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--user-data-dir="$HOME/proxy-profile" \
--proxy-server="socks5://localhost:9090"当使用Firefox运行Linux或Windows \时(不需要添加任何附件)
指南如何设置SSH短袜隧道供用户浏览解释了如何设置运行Mac、Windows或Linux并使用Google或Firefox的SOCKS隧道。我只是简单地引用了macOS和Crome的设置,以防链接失效。
发布于 2020-12-09 16:17:08
Route all requests through a single container --这是正确的方法。
请参阅API网关模式
发布于 2020-12-13 11:18:54
目前为止我能找到的最好的解决方案。它不适合生产。但是,对于原型化,或者仅仅是试图通过使用容器来模拟服务器结构,这是一个简单的设置。
的一般想法:部署运行Webbrowser的第三个VNC容器,并将第三个容器的端口转发到本地机器。由于第三个容器是码头网络的一部分,它可以自然地解析内部域名,并且本地机器上的VNC安装使您能够与GUI进行交互。
逼近
一步
version: "3.4"
services:
openam:
image: openidentityplatform/openam
ports:
- 5001:8080
command: /usr/local/tomcat/bin/catalina.sh run
flask:
build: ./SimpleHTTPServer
ports:
- 5002:8000
command: python -m http.server 8000
firefoxVnc:
container_name: firefoxVnc
image: creack/firefox-vnc
ports:
- 5900:5900
environment:
- HOME=/
command: x11vnc -forever -usepw -createdocker-compose up$ vim ~/.ssh/config上添加以下行:Host *
ForwardAgent yes
ForwardX11 yes$ vim /etc/ssh/sshd_config并编辑以下行:X11Forwarding yes
X11DisplayOffset 10ssh -v -X -L 5900:localhost:5900 gw.example.com1234,这是在VNC映像的原始Dockerfile中设置的(参见上面链接的creack的post )。openam:8080/openam/会话的浏览器中转到apache:80或localhost:5900。https://stackoverflow.com/questions/65220126
复制相似问题