Continuous integration 依赖于其他服务的服务-wercker ci

Continuous integration 依赖于其他服务的服务-wercker ci,continuous-integration,integration-testing,wercker,Continuous Integration,Integration Testing,Wercker,我使用wercker将API服务器作为私有服务与redis和postgres服务(所有应用程序级别)一起运行,以对客户端进行集成测试,从而自动化测试和部署API客户端。理论上,这种设置允许我的客户端与api服务器交互,并且客户端和服务器都能够使用相同的postgres和redis服务 我的私有服务依赖于数据库服务,因此需要在启动时将这些服务的主机和端口(公开的环境变量)作为环境变量注入其容器中。但是,我无法从声明的同一服务块中访问这些公开的连接变量 我在下面发布了我的wercker.yml的一部

我使用wercker将API服务器作为私有服务与redis和postgres服务(所有应用程序级别)一起运行,以对客户端进行集成测试,从而自动化测试和部署API客户端。理论上,这种设置允许我的客户端与api服务器交互,并且客户端和服务器都能够使用相同的postgres和redis服务

我的私有服务依赖于数据库服务,因此需要在启动时将这些服务的主机和端口(公开的环境变量)作为环境变量注入其容器中。但是,我无法从声明的同一服务块中访问这些公开的连接变量

我在下面发布了我的wercker.yml的一部分:

 - id: postgres
   env:
       POSTGRES_PASSWORD: $POSTGRES_PASSWORD
       POSTGRES_USER: $POSTGRES_USER
       POSTGRES_DB: $POSTGRES_DB

 - redis

 # - spotify/cassandra

 - name: realtime
   id: quay.io/ndustrialio/realtime-api-service
   username: $QUAY_USERNAME
   password: $QUAY_PASSWORD
   tag: latest
   registry: https://quay.io
   env:
       CLIENT_ID: $CLIENT_ID
       CLIENT_SECRET: $CLIENT_SECRET
       POSTGRES_USER: $POSTGRES_USER
       POSTGRES_PASSWORD: $POSTGRES_PASSWORD
       POSTGRES_DB: $POSTGRES_DB
       POSTGRES_HOST: $POSTGRES_PORT_5432_TCP_ADDR
       NODE_ENV: wercker_test
       REDIS_HOST: $REDIS_PORT_6379_TCP_ADDR
       REDIS_PORT: 6379
       REDIS_DB: 0
       CASSANDRA_HOSTS: cassandra

实时服务容器中的环境变量$REDIS_PORT_6379_TCP_ADDR和$POSTGRES_PORT_5432_TCP_ADDR为空。如何在实时服务中访问这些变量?

解决方案是依靠

您的postgres服务的IP具有从其id派生的主机名,因此您只需替换
postgres\u主机:$postgres\u端口\u 5432\u TCP\u地址

通过
POSTGRES\u主机:POSTGRES

解决方案是依靠

您的postgres服务的IP具有从其id派生的主机名,因此您只需替换
postgres\u主机:$postgres\u端口\u 5432\u TCP\u地址

通过
POSTGRES\u HOST:POSTGRES

以防我没有正确理解您的问题,
$REDIS\u PORT\u 6379\u TCP\u ADDR
是您在Wercker控制面板中设置的Wercker环境变量,对吗?它是从REDIS服务公开的环境变量(请参阅),因此我没有明确设置它。哦,我明白了,您正在将docker容器本地的env变量
REDIS\u HOST
设置为等于
$REDIS\u PORT\u 6379\u TCP\u ADDR
-但是
REDIS\u HOST
最终为空?是的,这是正确的,嗯-您尝试过联系Wercker支持部门吗?在没有看到整个设置的情况下,很难缩小范围。您是否可能将env变量的名称弄错了?为了防止我不能正确理解您的问题,
$REDIS\u PORT\u 6379\u TCP\u ADDR
是您在Wercker控制面板中正确设置的Wercker环境变量?它是从REDIS服务公开的环境变量(请参阅),所以我没有显式地设置它。哦,我明白了,您正在将docker容器本地的env变量
REDIS\u HOST
设置为等于
$REDIS\u PORT\u 6379\u TCP\u ADDR
-但是
REDIS\u HOST
最终为空?是的,这是正确的,嗯-您尝试过联系Wercker支持部门吗?在没有看到整个设置的情况下,很难缩小范围。是否有可能您将env变量的名称弄错了?