私はwerckerを使用して、クライアントの統合テストのためにredisおよびpostgresサービス(すべてのアプリケーションレベル)とともにプライベートサービスとしてAPIサーバーを実行することにより、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 は、リアルタイム サービス コンテナーでは空です。リアルタイム サービスでこれらの変数にアクセスするにはどうすればよいですか?