首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为配置文件跨容器传递容器IP

问为配置文件跨容器传递容器IP
EN

Stack Overflow用户
提问于 2015-10-27 17:56:08
回答 1查看 1K关注 0票数 0

我是Docker的新手,我正在尝试创建两个容器,一个用于MySQL,另一个用于我的Node.js应用程序,基于Docker集线器的图像。

我想将我的节点应用程序连接到MySQL主机。

为此,我计划在我的config.yaml (由节点配置使用)中存储有关该主机节点配置的信息,供以后使用。

我的问题是:我如何将MySQL容器的IP地址传递给我的node.js应用程序?

它是动态属性的,我模糊地知道我可以使用命令作为docker inspect $(docker ps -q) | grep '"IPAddress"'检索它,这可能是一条线索吗?

Docker-compose.yml:

代码语言:javascript
复制
mysql:
  image: mysql:5.6
  environment:   
    - MYSQL_ROOT_PASSWORD=****
    - MYSQL_DATABASE=database
    - MYSQL_USER=user
    - MYSQL_PASSWORD=****
  volumes:
    - /data/mysql:/var/lib/mysql

nodeapp:
  build: .
  environment:
    - MYSQL_USER=^^^^^ // will mirror the value up there, and so on
    - ...
  ports:
    - "80:3000"
  links:
    - mysql

Config.yaml:

代码语言:javascript
复制
app:

  port: 3000

  db:
    host: "MYSQL_HOST" // How can this be dynamic ?
    port:"MYSQL_PORT"
    database: "MYSQL_DATABASE"
    user: "MYSQL_USER"
    password: "MYSQL_PASSWORD"

Dockerfile:

代码语言:javascript
复制
FROM    node:0.10

ADD package.json /usr/src/package.json
# Install app dependencies
RUN cd /usr/src && npm install

ADD . /usr/src
WORKDIR /usr/src

EXPOSE  3000

CMD npm start
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 18:19:37

当您使用docker-组合运行容器时,它会在/etc/hosts中的每个容器中添加一条格式的动态行。

代码语言:javascript
复制
<dynamic ip> container_name

因此,当您运行docker-compose up时,每个容器都知道任何其他容器的名称。

因此,在您的confing.yaml中,您必须更改这一行

代码语言:javascript
复制
 host: "MYSQL_HOST" // How can this be dynamic ?

使用

代码语言:javascript
复制
host: mysql

因为在/etc/hosts中,主机名mysql和MySQL容器由停靠者分配的动态ip之间有动态关联。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33375232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档