作者:WO | 来源:互联网 | 2022-12-06 16:39
我将端口从docker容器暴露给我的服务器时遇到问题.这就是我所做的:
我写了一个非常简单的弹簧启动应用程序,它运行在端口8080上.
现在我试图将它部署到我的服务器上的docker容器中.基于Spring - 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
有谁知道我做错了吗?
到目前为止我尝试过的:
使用不同的本地端口
将EXPOSE添加到Dockerfile
添加--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
Ganesh Satpu..
6
运行以下命令
docker run -d -p 9065:8080 testportmapping:latest
图像名称应该是最后一个参数,所有其他参数应该在它之前.
PS正如@David Maze在评论中所提到的,无论图像名称被传递到容器之后
1> Ganesh Satpu..:
运行以下命令
docker run -d -p 9065:8080 testportmapping:latest
图像名称应该是最后一个参数,所有其他参数应该在它之前.
PS正如@David Maze在评论中所提到的,无论图像名称被传递到容器之后
(图像名称之后的任何内容都被解释为在容器中运行的命令.)