刚学习 docker/微服务的几点小问题

2019-11-19 17:10:36 +08:00
 zhongdian121

最近开始学习 docker,自己想搞一些小玩意儿,然后统统丢到一个云主机上部署,省钱嘛。学习过程中有一些疑问,我想还是在 V 站问一下能够减少我之后踩坑的时间。

1、假如我在容器 A 和容器 B 上各部署了一个网站,想要解析到不同的 url 路径,比如 localhost/websiteA 和 localhost/websiteB,最佳实践是怎样的?我有搜索到用 nginx,那我的 nginx 是部署到宿主机比较好呢,还是新建一个容器 C 专门做反向路由呢?

2、我在本地用到了几个容器,把他们部署到云主机的时候,是一个个地 docker pull 呢,还是有更好的方法来实现?开发环境使用的是 Windows/macOS 的 docker,云主机用 Linux 的 docker,会出现问题吗?

看了一下 k8s 的文档,感觉 k8s 能够解决问题 2。不过以我粗浅的理解,k8s 貌似很重的样子,我并不存在多个物理服务器,也不需要多个灾备实例的呀。所以不知道 k8s 是不是解决这个问题的正确方向。

5706 次点击
所在节点    Docker
5 条回复
dcalsky
2019-11-19 17:22:41 +08:00
你目前还用不到 k8s。

1. 新建容器 c,nginx image 或者 traefik 作为代理,然后用 docker-compose 去连接这些 abc 容器到同一个 network 下。这样能实现简单的服务发现啦。

2. 还是用 docker-compose,写一个 docker-compose.yaml 配置文件,就可以一键 pull 或 push 镜像啦。

2.5. 一般不会出现问题,版本一致的话放心用就好了
zhongdian121
2019-11-19 18:37:13 +08:00
@dcalsky 好的,我这就去学习一下 docker-compose 和 traefik
lllllliu
2019-11-21 11:12:54 +08:00
@dcalsky 借楼请教一下,我有 APP1 ( php+mysql )有 APP2 ( go+mysql ) 我是把 APP1 和 APP2 直接打包成一个镜像好。还是每个都用 compose 编排。这样的话如果想让两个 APP 的数据都能存 /读一个 mysql,是不是要单独部署一个 mysql ? emmmm
dcalsky
2019-11-22 00:22:09 +08:00
@lllllliu

1. 分别 build 成不同的 image,把 mysql 去掉,只剩逻辑部分。

2. 建议单独部署一个 mysql container,连接的时候 host 填 mysql (你的 mysql service name )。注意,3 个 services ( app1,app2,mysql )要在同一个 network 下(默认情况即是如此)。
yuchen01
2020-03-03 14:58:42 +08:00
@dcalsky 这需求用 k8s 是能实现,不过没必要~哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/621097

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX