Docker 当容器手动运行时本地主机可以访问容器,但当由 jenkinsfile 运行时则不能

Docker container accessible to localhost when container is runned manually but not when runned by a jenkinsfile

im 运行在暴露在 PORT:8084 上的容器上安装 spring 启动应用程序。 图像被推送到 docker hub 然后我在 Jenkinsfile 上有这个脚本 运行s 容器上的图像:

stage('Deploying the image into a container'){
        steps {
            echo "Installing the app "
            sh 'docker run $imagename:$BUILD_NUMBER -p 8084:8084 -d --name $dockerImage  '
        }
    }

应用程序无法在 'localhost:8084' 容器已启动且 运行ning docker-ps 时访问:

33f8cb4d98e6   28609002/time_sheet_dev_ops:38   "java -jar time_shee…"   29 minutes ago   Up 3 seconds   8084/tcp   focused_merkle

但是当我在我的终端中手动 运行 图像时,该应用程序可以访问:

docker run -d -p 8084:8084 imagename

当 运行宁 docker ps :

50715adaa50c   28609002/time_sheet_dev_ops:latest   "java -jar time_shee…"   8 seconds ago   Up 7 seconds   0.0.0.0:8084->8084/tcp, :::8084->8084/tcp   distracted_shamir

唯一的区别在于端口输出,我尝试将 -b 0.0.0.0 添加到 运行 命令,还尝试通过“127.0.0.1:8084”和许多其他解决方案访问应用程序,但似乎什么都没有使其在 CI/CD 管道

中工作

尝试 run 之后和 image 之前的选项。

这里是 docker run --help 输出:

 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

所以,正确的命令:

sh 'docker run -p 8084:8084 -d --name $dockerImage $imagename:$BUILD_NUMBER'