Ich bin ziemlich ein Noob And Docker und ich lese das offizielle Tutorial, wie man es in den vergangenen Tagen verwendet. Ich entschied mich, meine sehr einfache Spring-Boot-Anwendung als Dienst in einem Schwarm einzusetzen, aber ich kann es von außen nicht erreichen. Übrigens, wenn ich das Andockfenster mit Andocklauf starte, ist der Container erreichbar.Docker Schwarm Service Port ist nicht zugänglich
So ist meine Feder-Boot-Kater auf 8081.
Dockerfile hören:
FROM java:openjdk-8-alpine
VOLUME /tmp
EXPOSE 8081
ADD docker-demo-1.0.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-
jar","/app.jar"]
Docker-compose.yml:
version: "3"
services:
web:
image: neyma6/demo:3.0
deploy:
replicas: 2
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "8081:8081"
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8082:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:
I eingesetzt 2-Dienste, ein Visualisierer und ein Spring-Boot-App. Der Visualizer ist zugänglich auf http://localhost:8082/ aber die App ist nicht auf http://localhost:8081/test
docker swarm init
docker stack deploy -c docker-compose.yml demo
Was habe ich falsch gemacht?
Es ist nicht das Problem löst, ich denke, es sollte kein Problem sein, mit die Instanzen, weil sie hinter dem Load Balancer von Docker stehen. – user2984100
Ich denke, dass Sie mehr Informationen erhalten müssen, indem Sie "docker service ps demo_web", "docker ps", "docker logs" und "docker inspect" verwenden. Sie können den Container auch als "docker exec -it XXX bash" anhängen. Und dann können Sie Ihre Anwendung im Container überprüfen. – SunghoMoon
Dank Mann, Docker Logs half mir herauszufinden, dass nicht genügend Speicher zur Verfügung gestellt wurde ... Der interessante Teil ist, dass der Visualizer die Container als laufende Container zeigte. – user2984100