关于 docker 的使用问题, 请教一下

2015-05-15 17:29:56 +08:00
 hanks315
想使用docker搭建一个测试环境, 在只有一台机器, 一个域名的情况下, 支持不同的开发人员, 把不同的项目代码部署在这个环境下, 并可以使用域名+端口的方式, 同时可以对不同测试环境进行访问,并测试, 大概是下面的样子:

不知道这样的用法该怎样比较好的实现, 发贴求助.
3569 次点击
所在节点    Docker
5 条回复
fundon
2015-05-15 18:49:04 +08:00
docker-compose nginx 代理
gDD
2015-05-15 18:59:46 +08:00
如果图里的 Proxy 是 Nginx,可以配成接受多个域名,然后每个域名反向代理到各个 Docker 端口,这样就可以避免使用端口,个人认为端口不如域名方便。
gDD
2015-05-15 19:01:54 +08:00
除了 docker-compose,也可以试试 Ansible,最近一次查过是直接支持 CoreOS 的。
nabla
2015-05-15 22:18:11 +08:00
直接用kubernetes?
rrrrutdk
2015-05-19 14:36:07 +08:00
redis:
image: redis
postgres:
image: postgres
server1:
image: testserver # test server镜像
env_file: # 定制test-server-1运行环境
- "server1.env" # REDIS_HOST=redis POSTGRES_HOST=postgres PROFILE=dev
links:
- "redis"
- "postgres"
expose:
- "12345" # test server的监听端口
server2:
image: testserver
env_file:
- "server2.env" # REDIS_HOST=redis POSTGRES_HOST=postgres PROFILE=staging
links:
- "redis"
- "postgres"
expose:
- "123456"
server3:
image: testserver
env_file:
- "server3.env" # REDIS_HOST=redis POSTGRES_HOST=postgres PROFILE=production
links:
- "redis"
- "postgres"
expose:
- "123456"
nginx:
image: nginx
links:
- "server1"
- "server2"
- "server3"
ports:
- "23456" # 为test server1准备的外部端口
- "13456"
- "12456"
volumes: # 为每个test server创建一个virtual host
- "server1.site:/etc/nginx/sites-enabled/server1" # listen 23456; proxy_pass http://server1:123456;
- "server2.site:/etc/nginx/sites-enabled/server2" # listen 13456; proxy_pass http://server2:123456;
- "server3.site:/etc/nginx/sites-enabled/server3" # listen 12456; proxy_pass http://server3:123456;


只是写了手动配置这些环境,
实际上可以写个简单脚本接受开发人员提供的env, site配置自动新增docker container并重启nginx

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

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

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

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

© 2021 V2EX