我是Docker的新手,我正在尝试创建两个容器,一个用于MySQL,另一个用于我的Node.js应用程序,基于Docker集线器的图像。
我想将我的节点应用程序连接到MySQL主机。
为此,我计划在我的config.yaml (由节点配置使用)中存储有关该主机节点配置的信息,供以后使用。
我的问题是:我如何将MySQL容器的IP地址传递给我的node.js应用程序?
它是动态属性的,我模糊地知道我可以使用命令作为docker inspect $(docker ps -q) | grep '"IPAddress"'检索它,这可能是一条线索吗?
Docker-compose.yml:
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:
- mysqlConfig.yaml:
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:
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发布于 2015-10-27 18:19:37
当您使用docker-组合运行容器时,它会在/etc/hosts中的每个容器中添加一条格式的动态行。
<dynamic ip> container_name因此,当您运行docker-compose up时,每个容器都知道任何其他容器的名称。
因此,在您的confing.yaml中,您必须更改这一行
host: "MYSQL_HOST" // How can this be dynamic ?使用
host: mysql因为在/etc/hosts中,主机名mysql和MySQL容器由停靠者分配的动态ip之间有动态关联。
https://stackoverflow.com/questions/33375232
复制相似问题