我遇到了一个问题,无法将docker容器中的端口暴露给我的服务器。
这是我所做的:
我编写了一个非常简单的spring boot应用程序,它在8080端口运行。 现在我正在尝试将其部署到我的服务器上的docker容器中。 根据Spring - Getting started with Docker用户指南,我创建了以下Dockerfile:
在第二步中,我将我的jar文件复制到与dockerfile存储在同一目录下,并使用以下命令构建容器:
现在当我运行时:
命令运行没有错误。但是,如果我查看:
我编写了一个非常简单的spring boot应用程序,它在8080端口运行。 现在我正在尝试将其部署到我的服务器上的docker容器中。 根据Spring - Getting started with Docker用户指南,我创建了以下Dockerfile:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
在第二步中,我将我的jar文件复制到与dockerfile存储在同一目录下,并使用以下命令构建容器:
docker build . -t testportmapping --build-arg JAR_FILE=swagger-v2-person-ws-0.0.1-SNAPSHOT.jar
现在当我运行时:
docker run -d testportmapping:latest -p 9065:8080
命令运行没有错误。但是,如果我查看:
docker container ls
:我发现没有创建端口映射:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f15639c81903 testportmapping:latest "java -Djava.securit…" About 6 minutes ago Up 6 minutes mystifying_payne
有人知道我做错了什么吗?
我已经尝试过的:
- 使用不同的本地端口
- 在Dockerfile中添加EXPOSE指令
- 在
docker run
命令中添加--net=host
- 运行容器并附加以查看应用程序是否正确启动(它确实启动了)
我的设置:
root@jupiter /h/n/d/p/swagger-v2# docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
root@jupiter /h/n/d/p/swagger-v2# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial