2

我有三个码头集装箱:

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
4

1 回答 1

0

docker network connect xwiki nginx-dev 

然后你的 nginx 容器将能够找到到其他两个容器的路由。

于 2017-09-09T11:26:18.643 回答