Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Portforwarding docker容器到本地主机_Java_Docker_Solr - Fatal编程技术网

Java Portforwarding docker容器到本地主机

Java Portforwarding docker容器到本地主机,java,docker,solr,Java,Docker,Solr,我正在尝试创建一个docker容器,以便连接到localhost:8180。但当我执行以下命令并尝试转到localhost时,我并没有得到任何结果 docker run -it -p 8180:8180 solrtest bash 我的dockerfile如下 FROM centos:7 COPY src/ /home/src/ RUN yum install -y \ java-1.8.0-openjdk \ java-1.8.0-openjdk-devel ENV JAVA_

我正在尝试创建一个docker容器,以便连接到localhost:8180。但当我执行以下命令并尝试转到localhost时,我并没有得到任何结果

docker run -it -p 8180:8180 solrtest bash
我的dockerfile如下

FROM centos:7
COPY src/ /home/src/
RUN yum install -y \
   java-1.8.0-openjdk \
   java-1.8.0-openjdk-devel

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/

RUN cd /home/src
RUN java -jar /home/src/app-solr-5-installer.jar -d "/home/app-solr"
RUN /home/app-solr/bin/app-solr start
EXPOSE 8180

应用程序本身已经启动,因此没有问题,我公开了8180端口。所以我不太清楚出了什么问题?

您需要按以下方式更改Docker文件:

FROM centos:7
COPY src/ /home/src/
RUN yum install -y \
   java-1.8.0-openjdk \
   java-1.8.0-openjdk-devel

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/

RUN cd /home/src
RUN java -jar /home/src/app-solr-5-installer.jar -d "/home/app-solr"

EXPOSE 8180

CMD /home/app-solr/bin/app-solr start
构建后,您可以运行它:

docker run -d -p 8180:8180 solrtest
在这种情况下,您不应该使用
-it bash
选项,因为它意味着分配tty并附加到bash。它不会运行您的应用程序:

-t              : Allocate a pseudo-tty
-i              : Keep STDIN open even if not attached

此处的更多信息:

您确定应用程序正在端口8180上运行吗。执行docker exec-it容器id bash,然后检查java应用程序正在哪个端口上运行
netstat-anp | grep 8180
,依此类推。在显示应用程序未运行的
docker run
命令中,使用
docker logs container id
检查docker容器日志,仅显示一个
bash
shell。Dockerfile应该有一个启动应用程序的
CMD
行。(任何正在运行的进程在每个
RUN
步骤结束时都会被删除,您无法在Dockerfile中启动后台进程。)[root@111124dfd9eb /]#netstat-anp | grep 8180 tcp 0 0 0 127.0.0.1:8180 0.0.0.0:*听着-这是我在执行netstat时得到的结果,但是当我执行该操作时,docker容器在几秒钟后退出?这仅仅意味着命令
/home/app solr/bin/app solr start
失败并出现一些错误。您可以通过
ps-a
进行检查,以了解您的
。之后,您可以通过
docker logs
检查日志。但是,您的评论与您的问题无关。另外,请参阅以获取参考。