代码之家  ›  专栏  ›  技术社区  ›  Flo

无法访问部署在Docker容器中的WebApp

  •  0
  • Flo  · 技术社区  · 6 年前

    我目前正在进入Docker(或尝试),所以我建立了一个小的网络应用程序。 我使用eclipse创建了一个maven项目,构建了一个.war文件并在glassfish服务器上本地部署(检查它是否工作)。 这很有效,我可以通过

    localhost:8080/myApp
    

    现在我创建了一个dockerfile,从中构建了一个docker映像,并通过

    docker run -d -p 8080:8080 myApp
    

    这同样有效,而且

    docker ps -a
    

    显示容器正在运行。 但是,当我现在尝试访问localhost:8080/myapp时,我得到

    错误连接被拒绝

    我在chrome、firefox和internet explorer上试过。

    docker exec -it <myContainer> bash
    

    给我一个容器里面的外壳(如预期的那样)。当我这样做的时候

    curl -v localhost:8080/myApp
    

    在这里,我得到了我期望的输出(来自myapp的页面)。

    因此,对我来说,这意味着容器正在运行,glassfish服务器正在容器内运行,myapp已经“正确”部署到所述服务器,但我仍然无法从容器外访问myapp。

    码头工人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"]
    

    开始.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
    
    0 回复  |  直到 6 年前