我目前正在进入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