我正在使用 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 在实时服务容器中为空。如何在我的实时服务中访问这些变量?