0

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?

Antwort

0

Ich nehme an, dass Sie diesen Docker-Stack auf Ihrem lokalen (1 Knoten) bereitgestellt, aber Sie haben versucht, 2 Container (Replikate) auf dem gleichen 8081-Port zu öffnen. Port wird Konflikt sein.

Ändern Sie die Replikate auf 1 und versuchen Sie es erneut.

+0

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

+0

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

+0

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

0

ich herausgefunden, was das Problem war, nicht genügend Speicher, um die federBootLaufBehälter vorgesehen war ...

Verwandte Themen