V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hanks315
V2EX  ›  Docker

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

  •  
  •   hanks315 ·
    hanks · 2015-05-15 17:29:56 +08:00 · 3574 次点击
    这是一个创建于 3479 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想使用docker搭建一个测试环境, 在只有一台机器, 一个域名的情况下, 支持不同的开发人员, 把不同的项目代码部署在这个环境下, 并可以使用域名+端口的方式, 同时可以对不同测试环境进行访问,并测试, 大概是下面的样子:

    不知道这样的用法该怎样比较好的实现, 发贴求助.
    5 条回复    2015-05-19 14:36:07 +08:00
    fundon
        1
    fundon  
       2015-05-15 18:49:04 +08:00
    docker-compose nginx 代理
    gDD
        2
    gDD  
       2015-05-15 18:59:46 +08:00 via iPhone
    如果图里的 Proxy 是 Nginx,可以配成接受多个域名,然后每个域名反向代理到各个 Docker 端口,这样就可以避免使用端口,个人认为端口不如域名方便。
    gDD
        3
    gDD  
       2015-05-15 19:01:54 +08:00 via iPhone
    除了 docker-compose,也可以试试 Ansible,最近一次查过是直接支持 CoreOS 的。
    nabla
        4
    nabla  
       2015-05-15 22:18:11 +08:00
    直接用kubernetes?
    rrrrutdk
        5
    rrrrutdk  
       2015-05-19 14:36:07 +08:00   ❤️ 1
    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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1243 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:03 · PVG 02:03 · LAX 10:03 · JFK 13:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.