我的应用程序包括一个独立的java服务器,一个客户端java web启动应用程序,一组所有在一个wildfly实例中运行的webapp,以及postgres。
客户端容器只是一个服务于JNLP和相应java客户端的nginx服务器。
我的所有容器都在同一台主机上运行。
这是我的dockerfile的一个稍微简化的版本:
version: '3'
services:
server:
privileged: true
image: <server_image>
networks:
- myapp
client:
image: <client_image>
networks:
- myapp
webapp:
privileged: true
image: <wildfly_image>
networks:
- myapp
postgres:
image: <postgres_image>
volumes:
- /pgdata:/pgdata
networks:
- myapp
lb:
image: dockercloud/haproxy:latest
environment:
- FORCE_DEFAULT_BACKEND=False
- ADDITIONAL_BACKEND_WEBAPPS=server webapp1 webapp:8080
- ADDITIONAL_BACKEND_CLIENT=server client1 client:80
- ADDITIONAL_BACKEND_SERVER=mode tcp,server server1 server:8080
- EXTRA_FRONTEND_SETTINGS_443=acl url_xmlrpc path_beg /xmlrpc, \
acl url_api path_beg /api, \
acl url_sys_api path_beg /sys-api, \
acl url_dashboard path_beg /dashboard-app, \
acl url_client path_beg /, \
use_backend WEBAPPS if url_xmlrpc, \
use_backend WEBAPPS if url_api, \
use_backend WEBAPPS if url_sys_api, \
use_backend WEBAPPS if url_dashboard, \
use_backend CLIENT if url_client
- EXTRA_FRONTEND_SETTINGS_8443=mode tcp,use_backend SERVER
ports:
- 443:443
- 8443:8443
networks:
- myapp
networks:
myapp:
external: false
从我的电脑,我可以从客户端容器下载java web start客户端,我可以从webapp容器加载webapps(以chrome为单位),我可以连接到独立的java服务器。 java服务器能够连接到postgres。 webapps能够从客户端容器加载资源。
除了wildfly webapp无法与独立的Java服务器建立TCP套接字连接外,一切正常。
这在AWS中运行,防火墙是敞开的。 CentOS已经完全更新,我运行Docker版本17.05.0-ce,使用docker-compose版本1.14.0-rc1构建89658be,构建c18a7ad。
我在内部数据中心运行完全相同的设置,一切正常。
有人知道可能会发生什么吗?