我用的是码头写作。
不久前我用了这段代码。Nginx使用来自"API_PORT_5432_TCP_ADDR“"API_PORT_5432_TCP_PORT”这样的环境变量的ip和端口。
现在我不能从一个容器连接到另一个容器。我在文档中找到了一些描述,“链接”应该做这样的工作,我的意思是它会创建环境变量,以后我可以在其他容器中得到它。但我不知道我做错了什么。有办法解决这个问题吗?如果你给我链接或者代码行,我会很高兴的。
谢谢。
version: '3.0'
services:
ubuntubase:
build: ./ubuntu-base
backend:
build: ./backend
links:
- postgresql:db
expose:
- "6060"
depends_on:
- ubuntubase
- postgresql
nginxreverseproxy:
build: ./nginx-reverse-proxy
expose:
- "80"
- "443"
links:
- backend:api
ports:
- "80:80"
volumes:
- ./logs/:/var/log/nginx/
depends_on:
- ubuntubase
- backend
postgresql:
restart: always
image: sameersbn/postgresql:9.6-2
expose:
- "5432"
depends_on:
- ubuntubase
environment:
- DEBUG=false
- DB_USER=...
- DB_PASS=...
- DB_NAME=...
volumes:
- /srv/docker/postgresql:/var/lib/postgresql发布于 2017-03-22 17:13:26
links不通过环境变量工作。它的工作方式是像DNS主机名一样公开服务的名称。因此,在您的示例中,您的"nginxreverseproxy“服务可以使用主机名"api”连接到“后端”服务。
默认情况下,这些链接使用服务的名称,即如果您指定了:
links:
- backend然后你会连接到“后端”。如果提供另一个名称(就像使用“api”那样),则该名称将作为别名公开。
但是,这并不能与端口通信。如果您想使用非默认端口,您可能需要自己设置一个环境变量,然后告诉您的服务使用它。
例如,您的“后端”公开了端口6060。如果您的"nginxreverseproxy“不知道这一点,您可以使用一个环境变量来告诉它。
nginxreverseproxy:
environment:
- BACKEND_PORT=6060然后告诉nginx服务使用该环境变量以及主机名"api“进行连接。
https://stackoverflow.com/questions/42956087
复制相似问题