背景
最近想尝试把自己的app 利用docker的方式部署, 就是做到app的数据库 mongodb 作为一个独立容器存在, 然后app 自己独立一个容器,通过相互通信连接起来。
Docker
------------------------
Container: MongoDB
Container: My-app
------------------------
根据 mongo 在docker hub 上面镜像的描述,是使用 docker run --link 的方式把mongo容器里面的环境变量曝露到其他容器中实现获取 mongodb server 的host以及port 的。app只需要使用如下形式的命令就能获取host 跟 port 从而连接数据库。这种方法亲测试可行的。
$ docker run --name my-app --link some-mongo:mongo -d my-app-image
问题
好了简述完mongo镜像推荐的–link方式,想请教一下各位大神一些问题:
-
根据docker官方文档,–link的方式是过时的,那现在应该用什么替代方式比较好呢?
-
或者说我这种分开2个镜像部署的方式欠妥呢?
请各位建议提点一下,谢谢。
我是建一个Makefile 把配置 什么的都放进去跑Makefile文件就好了 自豪地采用 CNodeJS ionic
@hewentaowx 有具体的项目参考下详细的Makefile吗, 因为纠结的是具体数据库跟app在docker中的交互方式, 谢谢。
看文档是推荐采用 user-defined networks 进行通信;而我之前看到的是通过docker-compose.yml文件编写各个容器连接情况,通过–link连接
ping-app:
build: .
restart: always
volumes:
- ./app:/usr/src/app
links:
- sentinel
- redis-master:db
sentinel:
build: ./builds/sentinel
restart: always
links:
- redis-master:redis-master
- redis-slave
不过看来,这确实有点落伍了
通过
docker network create -d bridge my-bridge
方式创建一个桥接或者overlay网络,让几个容器同时运行在网络内,就可以互相通过容器名访问了,类似link
@samcsf 我感觉发出来也不适用不然就贴图了 第一 我用的coffeescript写的 第二目前并没有加数据库用的leancloud 跑的本地去call leancloud…… 自豪地采用 CNodeJS ionic
@royalrover 嗯嗯,我也看到了这个,只不过我觉得如果为了一个数据库去弄这个有点成本大, --link 直接明了简单,只是怕有不支持的一天哈哈。 谢啦。
@hewentaowx 好的,明白。其实也提供了一个思路,数据库跟程序也不一定在一台机器,分布也有好处,或者这问题在具体情境中也是能避免的,谢啦: )
自建数据库吗?我们是用的阿里的,然后配置的环境变量,数据库直接就是指向一个 URL。 另:数据库不怎么适合容器吧?
创建网络呗。docker-compose 也是创建的网络。
Usage: docker network COMMAND
Manage networks
Options:
--help Print usage
Commands:
connect Connect a container to a network
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks
同一个网络下,可以直接通过 --hostname 指定的名字进行通信、
你可以学一些 docker-compose。 更多高级技巧,可以看下我的这篇文章
自建 bridge 的方式 http://aftercode.club/aftercode/docker/cheatsheet/2017/09/22/quick-docker-cheatsheet-5.html 通过 docker-compose 的方式 http://aftercode.club/aftercode/docker/cheatsheet/2017/10/15/quick-docker-cheatsheet-6.html 自己的学习笔记 将就看看吧
@Joursion 嗯,好,谢谢建议。 @MiYogurt @royalrover 多谢两位的分享,我再折腾一下