Dag*_*ahl 6 docker docker-compose elastic-stack
我有一个dockerized应用程序,其中一些服务使用docker-compose运行.我想使用另一个搬运工-撰写应用,来连接与ElasticSearch/Logstash/Kibana(ELK)本申请搬运工-麋鹿.它们都在开发中的同一个docker机器上运行.在生产中,情况可能并非如此.
如何配置我的应用程序docker-compose.yml以链接到ELK堆栈?
您还可以在 docker-compose 之外使用 docker 创建网络:
docker network create my-shared-network
Run Code Online (Sandbox Code Playgroud)
在你的 docker-compose.yml 中:
version: '2'
services:
pg:
image: postgres:9.4.4
container_name: pg
expose:
- "5432"
networks:
default:
external:
name: my-shared-network
Run Code Online (Sandbox Code Playgroud)
在你的第二个 docker-compose.yml 中:
version: '2'
myapp:
image: quay.io/myco/myapp
container_name: myapp
environment:
DATABASE_URL: "http://pg:5432"
net: ${NETWORK}
expose:
- "3000"
networks:
default:
external:
name: my-shared-network
Run Code Online (Sandbox Code Playgroud)
并且两个实例都可以看到对方,主机上没有开放端口,您只需要公开端口,就会通过网络看到对方:“my-shared-network”。
2016年6月更新
以下答案从docker 1.10开始已过时.请参阅此解决方案的其他类似答案. /sf/answers/2413375611/
老答案
创建一个网络:
$ docker network create --driver bridge my-net
Run Code Online (Sandbox Code Playgroud)将网络引用为${NETWORK}docker-compose.yml文件中的环境变量().例如:
pg:
image: postgres:9.4.4
container_name: pg
net: ${NETWORK}
ports:
- "5432"
myapp:
image: quay.io/myco/myapp
container_name: myapp
environment:
DATABASE_URL: "http://pg:5432"
net: ${NETWORK}
ports:
- "3000:3000"
Run Code Online (Sandbox Code Playgroud)请注意,pgin http://pg:5432将解析为pg服务(容器)的ip地址.无需硬编码IP地址; pg的条目会自动添加到myapp容器的/ etc/host中.
调用docker-compose,将其传递给您创建的网络:
$ NETWORK=my-net docker-compose up -d -f docker-compose.yml -f other-compose.yml
Run Code Online (Sandbox Code Playgroud)我创建了一个桥接网络,只能在一个节点(主机)内工作.对开发者有好处.如果需要让两个节点相互通信,则需要创建一个覆盖网络.同样的原则.您将网络名称传递给docker-compose up命令.
| 归档时间: |
|
| 查看次数: |
8616 次 |
| 最近记录: |