我有以下dockerfile
:
FROM openjdk:8 as stage0
WORKDIR /opt/docker
COPY opt /opt
USER root
RUN ["chmod", "-R", "u=rX,g=rX", "/opt/docker"]
RUN ["chmod", "u+x,g+x", "/opt/docker/bin/sapmock"]
FROM openjdk:8
USER root
RUN id -u demiourgos728 2> /dev/null || (( getent group 0 || groupadd -g 0 root ) && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 )
WORKDIR /opt/docker
COPY --from=stage0 --chown=demiourgos728:root /opt/docker /opt/docker
EXPOSE 8080
USER 1001:0
ENTRYPOINT ["/opt/docker/bin/sapmock"]
CMD []
如您所见,公开了端口8080
。
当我开始从图像运行容器时,如下所示:
docker run -it -p 8080:8080 db261ab225b5
Server online at localhost on the port 8080
Press RETURN to stop...
客户端无法通过地址localhost:8080
连接,为什么?
答案 0 :(得分:3)
拉杰什的答案很可能是正确的。尽管我认为您的应用程序更有可能只是绑定到容器内部的localhost
/ 127.0.0.1
,但无法正常工作。确保您的应用绑定到容器内的0.0.0.0
,然后端口映射将起作用。