【发布时间】:2019-02-01 03:55:46
【问题描述】:
我无法将 docker 容器中的端口暴露给我的服务器。 这是我所做的:
我写了一个运行在 8080 端口上的非常简单的 Spring Boot 应用程序。
现在我正在尝试将它部署到我服务器上的 docker 容器中。
根据Spring - Getting started with Docker Userguide,我创建了以下 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
- 将
--net=host添加到docker run命令 - 运行附加的容器以查看应用是否正确启动(确实如此)
我的设置:
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
【问题讨论】:
标签: docker spring-boot port dockerfile