如何在 Docker 中为基于 WebUI 的应用程序正确 expose/publish 端口?
How to properly expose/publish ports for a WebUI-based application in Docker?
我正在尝试将 this webapp 移植到 Docker。我写了以下 Docker 文件:
FROM anapsix/alpine-java
MAINTAINER <name>
COPY aard2-web-0.7-java6.jar /home/aard2-web-0.7-java6.jar
COPY start.sh /home/start.sh
CMD ["bash", "/home/start.sh"]
EXPOSE 8013/tcp
这里是start.sh
的内容:
#!/bin/bash
java -Dslobber.browse=true -jar /home/aard2-web-0.7-java6.jar /home/dicts/*.slob
然后我构建了镜像:
docker build -t aard2-docker .
我使用以下命令 运行 容器:
docker run --name Aard2 -p 127.0.0.1:8013:8013 -v /home/<name>/dicts:/home/dicts aard2-docker
该应用 运行 正常,提示它正在 http://127.0.0.1:8013 监听。然而,我打开地址却发现无法连接到应用程序。
我尝试使用 EXPOSE
命令(如上面的 Docker 文件片段所示)和 -p
标志的变体,例如 -p 127.0.0.1:8013:8013
、-p 8013:8013
、-p 8013:8013/tcp
,但其中 none 有效。
我怎样才能 expose/publish 端口正确地连接到 127.0.0.1?谢谢!
原作者回复如下:
you need to tell the server to listen on all network interfaces instead of localhost - that is you are missing -Dslobber.host=0.0.0.0
this works for me:
FROM anapsix/alpine-java
COPY ./build/libs/aard2-web-0.7.jar /home/aard2-web-0.7.jar
CMD ["bash", "-c", "java -Dslobber.host=0.0.0.0 -jar /home/aard2-web-0.7.jar /dicts/*.slob"]
EXPOSE 8013/tcp
and then run like this:
docker run -v $HOME/Downloads:/dicts -p 8013:8013 --rm aard2-web
-Dslobber.browse=true
opens default browser, I don't think this has any effect in docker so don't need that.
https://github.com/itkach/aard2-web/issues/12#issuecomment-895557949
我正在尝试将 this webapp 移植到 Docker。我写了以下 Docker 文件:
FROM anapsix/alpine-java
MAINTAINER <name>
COPY aard2-web-0.7-java6.jar /home/aard2-web-0.7-java6.jar
COPY start.sh /home/start.sh
CMD ["bash", "/home/start.sh"]
EXPOSE 8013/tcp
这里是start.sh
的内容:
#!/bin/bash
java -Dslobber.browse=true -jar /home/aard2-web-0.7-java6.jar /home/dicts/*.slob
然后我构建了镜像:
docker build -t aard2-docker .
我使用以下命令 运行 容器:
docker run --name Aard2 -p 127.0.0.1:8013:8013 -v /home/<name>/dicts:/home/dicts aard2-docker
该应用 运行 正常,提示它正在 http://127.0.0.1:8013 监听。然而,我打开地址却发现无法连接到应用程序。
我尝试使用 EXPOSE
命令(如上面的 Docker 文件片段所示)和 -p
标志的变体,例如 -p 127.0.0.1:8013:8013
、-p 8013:8013
、-p 8013:8013/tcp
,但其中 none 有效。
我怎样才能 expose/publish 端口正确地连接到 127.0.0.1?谢谢!
原作者回复如下:
you need to tell the server to listen on all network interfaces instead of localhost - that is you are missing -Dslobber.host=0.0.0.0
this works for me:
FROM anapsix/alpine-java COPY ./build/libs/aard2-web-0.7.jar /home/aard2-web-0.7.jar CMD ["bash", "-c", "java -Dslobber.host=0.0.0.0 -jar /home/aard2-web-0.7.jar /dicts/*.slob"] EXPOSE 8013/tcp
and then run like this:
docker run -v $HOME/Downloads:/dicts -p 8013:8013 --rm aard2-web
-Dslobber.browse=true
opens default browser, I don't think this has any effect in docker so don't need that.https://github.com/itkach/aard2-web/issues/12#issuecomment-895557949