首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有nginx和无环境变量的码头工人组成量表

具有nginx和无环境变量的码头工人组成量表
EN

Stack Overflow用户
提问于 2016-07-02 10:38:51
回答 1查看 1.8K关注 0票数 0

我使用docker-组合来描述我的一个应用程序的部署。应用程序由一个

  • mongodb数据库,
  • nodejs应用程序
  • nginx前端是nodejs的静态文件。

如果我缩放nodejs应用程序,我希望nginx自动缩放到这三个应用程序。

最近,我使用了以下代码片段:

https://gist.github.com/cmoore4/4659db35ec9432a70bca

这是基于以下事实:在链接上创建了一些环境变量,并在出现新服务器时进行更改。

但是现在,随着docker文件的版本2和新链接系统的码头,环境变量已经不存在了。

我的nginx现在如何检测我的应用程序的扩展?

代码语言:javascript
复制
version: '2'
services:
    nodejs:
        build:
          context: ./
          dockerfile: Dockerfile.nodejs
        image: docker.shadoware.org/passprotect-server:1.0.0
        expose:
            - 3000
        links:
            - mongodb
        environment:
            - MONGODB_HOST=mongodb://mongodb:27017/passprotect
            - NODE_ENV=production
            - DEBUG=App:*
    nginx:
        image: docker.shadoware.org/nginx:1.2
        links:
            - nodejs
        environment:
            - APPLICATION_HOST=nodejs
            - APPLICATION_PORT=3000
    mongodb:
        image: docker.shadoware.org/database/mongodb:3.2.7
EN

回答 1

Stack Overflow用户

发布于 2016-07-02 12:12:00

文档声明这里

可以在与别名相同的主机名上访问链接服务的容器,如果未指定别名,则可访问服务名称。

因此,我相信您可以在nginx conf文件中设置服务名称,如下所示:

代码语言:javascript
复制
upstream myservice {
    yourservice1;
    yourservice2;
}

因为它们将作为每个容器的主机条目在/etc/hosts中导出。

但是,如果您真的想要将主机:端口信息作为环境变量,您可以编写一个脚本来解析这个docker-come.yml和定义.env文件,或者手动完成它。

更新:

您可以从容器外部获取该端口信息,这将返回港口。

代码语言:javascript
复制
docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' your_container_id

但是,如果您想要从容器内部执行此操作,那么您需要的是像动物园管理员这样的服务发现系统。

关于这一点,有一个很长的码头回购中的特性请求线程

一种解决办法引起了我的注意。您可以尝试在此基础上构建自己的nginx映像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38159180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档