运行Docker映像时出现问题

时间:2020-01-09 06:15:05

标签: docker

我有一个测试Web应用程序,可以在localhost:8080上本地运行。我使用Maven构建应用程序:

mvn clean install -U

我使用以下maven命令运行该应用程序:

mvn org.codehaus.mojo:tomcat-maven-plugin:run

然后我可以访问localhost网址:http://localhost:8080/pokemon/healthcheck 这是一个简单的测试应用程序,我只想对自己进行学习以对接。我能够运行python“ Hello World”示例,因此我认为我已将所有安装在正确的位置。我的Dockerfile具有以下内容:

FROM tomcat:alpine
RUN ["/bin/rm", "-fr", "/usr/local/tomcat/webapps/ROOT"]
RUN ["/bin/mkdir", "/var/log/tomcat8/"]
COPY target/pokemon.war /usr/local/tomcat/webapps/pokemon.war

然后,我停止本地运行的本地主机,假设我需要这样做,然后使用以下命令构建映像:

docker build -t pokesheets .

然后我尝试使用以下命令运行它:

docker run -it pokesheets:latest

该日志对我来说看起来不错,我在日志中看到该服务已启动的消息。容器正在运行,我可以看到它。但是我无法进入http://localhost:8080/pokemon/healthcheck。因此,我也尝试使用以下命令运行docker映像:

    docker run -it -p 8080:8080 pokesheets:latest
    docker run -d --name pokesheets -p 8090:8090 -p 8091:8091 pokesheets:latest
    docker run --rm -p 8080:8080 pokesheets:latest
    docker container run -d --name pokesheets -p 8080:8080 pokesheets:latest

我怀疑也许有一些我不了解的非常基本的东西。我非常感谢来自对Docker有一定经验并且可以阐明问题的人员的意见。

1 个答案:

答案 0 :(得分:1)

您实际上并没有在Docker容器中运行服务器。

您构建它并将文件复制到其中,但是您没有启动服务器。

使用ENTRYPOINT指令。

编辑:

Tomcat官方Docker镜像存储库指定使用CMD指令,并且还使用:8888端口。

CMD ["catalina.sh", "run"]

编辑2:

构建图片:docker build -t pokesheets .

FROM tomcat:alpine

RUN ["/bin/rm", "-fr", "/usr/local/tomcat/webapps/ROOT"]
RUN ["/bin/mkdir", "/var/log/tomcat8/"]
ADD target/pokemon.war /usr/local/tomcat/webapps/pokemon.war

EXPOSE 8080

CMD ["catalina.sh", "run"]

运行容器

docker run -it -p 80:8080 pokesheets:latest

访问http://localhost:8080/pokemon/healthcheck