我有三个码头集装箱:
1: nginx 容器可在 8080 端口访问,但不使用桥接网络
2: xwiki 容器运行 tomcat 可使用桥接网络在端口 8080 上访问
3:Postgres 容器托管 xwiki 数据库,可使用与 xwiki 容器相同的桥接网络在端口 5432 上访问
我希望能够将 nginx 设置为反向代理并将 xwiki 站点加载到诸如http://site-root/xwiki之类的 url 上,但它不能这样做,因为它不在同一个桥接网络上,我得到一个 no路由到主机错误...
使用 docker hosts ip 和相应的容器端口可以从远程主机访问所有主机...
我已经创建了 xwiki 和 postgres 容器,它们不使用桥接网络来测试它,但是 xwiki tomcat 服务器失败,因为 xwiki 找不到 postgres 服务器,并且我收到以下错误作为 tomcat 异常:
java.net.UnknownHostException: postgres-db-server
是否不需要为 xwiki 和 postgres 容器使用桥接网络,并让它们使用 docker 主机 IP 和它们各自的端口号进行通信?
我在想我可能需要编辑 xwiki 容器中的 tomcat 配置,以便它使用 docker 主机 IP 和 postgres 默认端口指向 postgres 服务器...
任何人都可以告诉我这听起来是否是正确的解决方案,或者我是否遗漏了有关桥接网络的需要?
我意识到一个可能的解决方案是将 nginx 容器设置为使用相同的桥接网络,但我也希望 nginx 服务能够反向代理在 docker 主机上运行的 node.js 服务器......(不是通过 docker)
我是否应该将节点容器化并使用与此相同的桥接网络运行所有容器,从逻辑上讲应该可以解决问题,但我担心它可能会导致其他问题...
docker 主机在 Centos 7 上运行
用于手动运行容器的命令如下所示:
Nginx
docker run -dti --name nginx-dev --hostname nginx-dev -p 80:80 -v /nginx/www:/usr/share/nginx/html:ro -v /nginx/conf:/etc/nginx -P -d nginx
Postgres
docker run --net=xwiki-nw --name postgres-db-server -p 5432:5432 -v /postgres/data:/var/lib/postgresql/data -e POSTGRES_ROOT_PASSWORD=xwiki -e POSTGRES_USER=xwiki -e POSTGRES_PASSWORD=xwiki -e POSTGRES_DB=xwiki -e POSTGRES_INITDB_ARGS="--encoding=UTF8" -d postgres:9.5
维基
docker run --net=xwiki-nw --name xwiki -p 8080:8080 -v /xwiki:/usr/local/xwiki -e DB_USER=xwiki -e DB_PASSWORD=xwiki -e DB_DATABASE=xwiki -e DB_HOST=postgres-db-server xwiki:postgres-tomcat