首页 > 解决方案 > Docker - 独立运行 Wildfly

问题描述

我有一个配置了 WildFly 独立安装的 Ubuntu 服务器,这里我有一个可在端口 80 上访问的 Java 应用程序,我想对其进行 docker 化。创建容器时,我将整个 WildFly 目录从本地存储复制到容器,当我运行docker run -d --name dej_website -p 80:80 wildfly_dej_website:2.0容器启动命令时,但尝试在我的本地计算机中访问时localhost不起作用。

我究竟做错了什么?如何使用已配置的服务器访问此容器?

这是我的码头文件

FROM centos

#INSTALL JAVA
RUN yum -y install java-11-openjdk
RUN java -version

RUN mkdir /opt/DEJ_Wildfly/

#SET OPT AS WORK DIRECTORY
WORKDIR /opt/DEJ_Wildfly/

#COPY WILDFLY SERVER FILES
COPY wildfly-11.0.0.Final .

#DEFINE ENVIRONMENT VARIABLE
ENV JBOSS_HOME /opt/DEJ_Wildfly/wildfly-11.0.0.Final/

#EXECUTE SH FILE
CMD JBOSS_HOME/bin/standalone.sh -b=0.0.0.0
CMD tail -f /var/log/lastlog
#EXPOSE 80

这是docker build --tag wildfly_dej_website:2.0 .命令日志:

Sending build context to Docker daemon  597.4MB
Step 1/9 : FROM centos
---> 300e315adb2f
Step 2/9 : RUN yum -y install java-11-openjdk
---> Using cache
---> f333f6149e02
Step 3/9 : RUN java -version
---> Using cache
---> 0110143899c7
Step 4/9 : RUN mkdir /opt/DEJ_Wildfly/
---> Running in 88bc6f0632c1
Removing intermediate container 88bc6f0632c1
---> c0ab7cc8a364
Step 5/9 : WORKDIR /opt/DEJ_Wildfly/
---> Running in 84705355ac2c
Removing intermediate container 84705355ac2c
---> 6986f8229cb0
Step 6/9 : COPY wildfly-11.0.0.Final .
---> 3caf8ec0e5d0
Step 7/9 : ENV JBOSS_HOME /opt/DEJ_Wildfly/wildfly-11.0.0.Final/
---> Running in b5f649e4e2e0
Removing intermediate container b5f649e4e2e0
---> 27d775c3d0cb
Step 8/9 : CMD JBOSS_HOME/bin/standalone.sh -b=0.0.0.0
---> Running in c7ffddb4bcdf
Removing intermediate container c7ffddb4bcdf
---> 533d3836f94d
Step 9/9 : CMD tail -f /var/log/lastlog
---> Running in f92aca5a63ba
Removing intermediate container f92aca5a63ba
---> 974e6ec6c415
Successfully built 974e6ec6c415
Successfully tagged wildfly_dej_website:2.0

这是容器列表:

CONTAINER ID   IMAGE                   COMMAND                CREATED       STATUS       PORTS              NAMES
95ee0139f42c   wildfly_dej_website:2.0 "/bin/sh -c 'tail -f…" 4 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp dej_website

标签: javadockerwildfly

解决方案


这里的问题出在你的 dockerfile 中。

您需要CMD在 dockerfile 的末尾添加一个来运行您想要的命令并使其保持运行,以便 docker 文件保持活动状态并通过docker logs命令为您提供日志。

在 dockerfile 中添加这样的一行:

RUN ./standalone.sh -b 0.0.0.0
CMD tail -f /var/log/syslog

为了使端口可以在本地机器上访问,您需要-p在发出如下docker run命令时使用选项:

docker run -d -p 127.0.0.1:80:8080 <image>

你可以在这里找到更多信息: https ://docs.docker.com/engine/reference/commandline/run/


推荐阅读