次のようにスケーリングされた 2 つの Web コンテナーがあるとします。
docker-compose scale web=2
Web コンテナーは次のように実行されます (Dockerfile から)。
ENTRYPOINT [ "java", "-jar", "/app/my-jar-server-1.0.jar" ]
2 つの異なる組み込み tomcat が異なるポートを確実にリッスンするための最良の戦略は何ですか (たとえば、Heroku のようなインフラストラクチャを構築したい場合: foreman を参照)。
つまり、両方のコンテナが同じポートをリッスンするため、競合が発生します。
理想的には、2 つの tomcat インスタンスへのリクエストをラウンドロビンする必要があります。ツールやアイデアを探しています...
編集1:
これが私が試したことです:
docker-compose.yml から:
loadbalancer:
image: haproxy
links:
- web
ports:
- "8080:8080"
web:
build: ./web
./web/Dockerfile から:
FROM java:8
ADD ./bignibou-server-1.0.jar /app/bignibou-server-1.0.jar
ADD ./spring-cloud.properties /app/spring-cloud.properties
ENV SPRING_CLOUD_PROPERTIESFILE=/app/spring-cloud.properties
ENV SPRING_PROFILES_ACTIVE=cloud
ENV SPRING_CLOUD_APP_NAME=bignibou
ENV CLEARDB_DATABASE_URL=mysql://root:root@localhost:3306/bignibou_dev
ENV REDISCLOUD_URL=redis://dummy:dummy@localhost:6379
ENV DYNO=dummy
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "/app/bignibou-server-1.0.jar" ]
ここに私が得るものがあります:
loadbalancer_1 | [ALERT] 091/105717 (1) : Could not open configuration file /usr/local/etc/haproxy/haproxy.cfg : No such file or directory
dockertests_loadbalancer_1 exited with code 1
Gracefully stopping... (press Ctrl+C again to force)
Stopping dockertests_web_1...
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/code/build/docker-compose/out00-PYZ.pyz/threading", line 552, in __bootstrap_inner
File "/code/build/docker-compose/out00-PYZ.pyz/threading", line 505, in run
File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.multiplexer", line 41, in _enqueue_output
File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.log_printer", line 62, in _make_log_generator
File "/code/build/docker-compose/out00-PYZ.pyz/compose.container", line 139, in wait
File "/code/build/docker-compose/out00-PYZ.pyz/docker.client", line 999, in wait
File "/code/build/docker-compose/out00-PYZ.pyz/docker.client", line 78, in _post
File "/code/build/docker-compose/out00-PYZ.pyz/requests.sessions", line 425, in post
File "/code/build/docker-compose/out00-PYZ.pyz/requests.sessions", line 383, in request
File "/code/build/docker-compose/out00-PYZ.pyz/requests.sessions", line 486, in send
File "/code/build/docker-compose/out00-PYZ.pyz/requests.adapters", line 374, in send
<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 'error'
編集 2 : 編集 1 を無視してください。問題を再現できませんでした。
ただし、Tomcat で 2 つのインスタンスを正常に開始できましたが、ブラウザーを介してそれらにアクセスしようとしました。
http://172.17.42.1:8080/
無駄に。誰か助けてくれませんか?