Невозможно получить доступ к веб-приложению, развернутому в контейнере Docker - PullRequest
0 голосов
/ 16 октября 2018

Я сейчас вхожу в Docker (или пытаюсь), поэтому я настроил небольшое веб-приложение.Я использовал Eclipse для создания проекта maven, создал .war-файл и развернул его (чтобы проверить, работает ли он) локально на сервере Glassfish.Это сработало, и я мог получить доступ к веб-приложению через

localhost:8080/myApp

Теперь я создал Dockerfile, создал образ Docker из этого и запустил все это через

docker run -d -p 8080:8080 myApp

Это также работает,и

docker ps -a

показывает, что контейнер работает.Однако, когда я пытаюсь получить доступ к localhost: 8080 / myApp сейчас, я получаю

ERR_CONNECTION_REFUSED

Я пробовал это с Chrome, Firefox и Internet Explorer.

docker exec -it <myContainer> bash

дает мне оболочку внутри контейнера (как и ожидалось).Когда я делаю

curl -v localhost:8080/myApp

здесь, я получаю ожидаемый вывод (страница из myApp).

Так что для меня это означает, что контейнер работает, сервер Glassfish работаетвнутри контейнера, и myApp "правильно" развернут на указанном сервере, но все равно я не могу получить доступ к myApp извне контейнера.

docker ps -a

дает это, кстати:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                                                       NAMES
9514b1ab6dd0        myApp              "sh /start.sh"      9 minutes ago       Up 9 minutes        4848/tcp, 8181/tcp, 0.0.0.0:8080->8080/tcp   admiring_cori

Dockerfile, конечно, содержит строку

EXPOSE 8080

Есть идеи, что здесь может быть не так?

Редактировать:

Это содержимое файла Dockerfile:

FROM glassfish:4.0

COPY myApp.war /
COPY start.sh /


EXPOSE 8080

RUN ["chmod", "+x", "/start.sh"]

ENTRYPOINT ["sh", "/start.sh"]

start.sh:

#!/bin/sh

/usr/local/glassfish4/bin/asadmin start-domain
/usr/local/glassfish4/bin/asadmin -u admin deploy /myApp.war
/usr/local/glassfish4/bin/asadmin stop-domain
/usr/local/glassfish4/bin/asadmin start-domain --verbose

Редактировать 2:

docker logs <container>

выход

Waiting for domain1 to start ...............
Successfully started the domain : domain1
domain  Location: /usr/local/glassfish4/glassfish/domains/domain1
Log File: /usr/local/glassfish4/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
Application deployed with name myApp.
Command deploy executed successfully.
Waiting for the domain to stop .
Command stop-domain executed successfully.
Launching GlassFish on Felix platform
Registered com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishRuntime@2ba2f40 in service registry.
Registry Info:: Total repositories: 1, Total modules = 293
Attached repository: []

[... Registered Modules... all with State = [NEW] or [RESOLVED]]

Found populator: com.sun.enterprise.v3.server.GFDomainXml

#!## LogManagerService.postConstruct : rootFolder=/usr/local/glassfish4/glassfish
#!## LogManagerService.postConstruct : templateDir=/usr/local/glassfish4/glassfish/lib/templates
#!## LogManagerService.postConstruct : src=/usr/local/glassfish4/glassfish/lib/templates/logging.properties
#!## LogManagerService.postConstruct : dest=/usr/local/glassfish4/glassfish/domains/domain1/config/logging.properties
...