如何使用docker-compose链接两个容器
目前,我有两个容器,我从图像中build立,然后链接两个:
例如:
#mysql docker build -t my/mysql docker-mysql docker run -p 3306:3306 --name mysql -d my/mysql:latest #webapp docker build -t my/tomcat:7.0 tomcat/7.0 docker run -d --link mysql --name tomcat7 my/tomcat:7.0
由于我使用mysql
容器链接webapp
容器,所以webapp
容器获得了一个创build的MYSQL_PORT_3306_TCP_ADDR
环境variables。 我使用这个环境variables,然后连接到我的jdbc
string中的MySQL数据库。
所有这些工作正常,但现在我想使用docker-compose
以便可以构build一切,并从一个命令运行。
然而,在玩docker组合时,我注意到它将docker_
前缀docker_
到图像名称,并且不赞成使用link
选项。
题
上面的build / run命令将如何转换为docker-compose yml文件,以便webapp容器可以连接到jdbc的mysql容器。
这是一个粗略的翻译成docker撰写。
请注意,docker-compose标记了它自己的图像,所以假设你在一个名为test
的目录中创build了一个mysql
映像,那么这个容器名将变成test_mysql_1
。 因为可以使用docker-compose扩展多个容器,所以在末尾添加了1。
这个文件也假定这个文件结构
├── docker-mysql │ └── Dockerfile ├── tomcat │ └── 7.0 │ └── Dockerfile └── docker-compose.yml
version: '2' services: mysql: build: context: "./docker-mysql" hostname: mysql ports: - "3306:3306" webapp: build: context: "./tomcat/7.0" hostname: tomcat7 links: - mysql
您需要在撰写yml中添加一个alias
属性。 以下是来自文档的文档 ,是一个非常简短的例子
web: links: - db - db:database - redis
这个组成片段定义了一个web
容器,它必须链接到db和redis容器,并且还会在db
容器中添加别名数据库。
在你的情况下,我认为对于tomcat容器的yml看起来像这样
mysql: image: my/mysql:latest ports: - "3306:3306" tomcat7: image: my/tomcat:7.0 links: - mysql
请记住,tomcat容器不暴露任何端口!
- 没有任何“docker run”调用的控制台输出
- 错误:mkdir与chown不能在Dockerfile中工作(nginx与php-fpm)
- 如何用Docker加载mysql扩展dockerfile,用Pfm和Nginx和Mysql编写
- Docker Toolbox Windowslogin到quay.io
- 如何为sqlserver2012创build一个docker镜像
- Docker-compose mysql似乎无法识别环境variablesMYSQL_RANDOM_ROOT_PASSWORD
- Docker swarm – 容器绑定到ethx IP
- docker工人不在“本地主机/子页面”
- 使用JavaScript启动Docker机器