当前位置: 首页 > 面试题库 >

docker正在运行,但无法在服务器上访问

邵浩大
2023-03-14
问题内容

我有Jenkins作业的阶段,可以使用docker测试和部署我的nodejs,我在端口3000上运行docker,但是当我尝试浏览我的docker时ip- server:3000,它不起作用,并且我的docker没有运行

这是我的Jenkinsfile

node {
  try {
    stage('Checkout') {
      checkout scm
    }
    stage('Environment') {
      sh 'git --version'
      echo "Branch: ${env.BRANCH_NAME}"
      sh 'docker -v'
      sh 'printenv'
    }
    stage('Build Docker test'){
     sh 'docker build -t crud-test -f Dockerfile.test --no-cache .'
    }
    stage('Docker test'){
      sh 'docker run --rm crud-test'
    }
    stage('Clean Docker test'){
      sh 'docker rmi crud-test'
    }
    stage('Deploy'){
      if(env.BRANCH_NAME == 'master'){
        sh 'docker build -t crud --no-cache .'
        sh 'docker run -d -p 3000:3000 -e DB_USERNAME=myusername -e DB_PASSWORD=12345678 -e DB_NAME=employee crud'
      }
    }
  }
  catch (err) {
    throw err
  }
}

Dockerfile:

# Extending image
FROM node:carbon

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get -y install autoconf automake libtool nasm make pkg-config git apt-utils

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Versions
RUN npm -v
RUN node -v

COPY ./server/ /usr/src/app

RUN npm install

# Port to listener
EXPOSE 3000

# Environment variables
ENV PORT 4000
ENV DB_USERNAME myusername
ENV DB_PASSWORD 12345678
ENV DB_NAME employee

# Main command
CMD [ "npm", "run", "dev" ]

我在ubuntu服务器上通过docker-
compose运行Jenkins,是我丢失还是出错了?因为我的目标是使用Jenkins来测试我的服务器,并且在测试成功后,它将把我的Nodejs部署到我的ubuntu服务器上,因此在Jenkins上完成构建后,我可以在浏览器上浏览我的服务器API以确保它可以在ip- sever:3000

但是在上面的管道中,每次我推动掌握时,这样做是正确的吗,无需单击build nowJenkins 即可更新服务器API ?如果没有,该如何配置?

我也不知道如何隐藏我的ENV,所以我出现在舞台Jenkinsfile上,因为在多分支管道上,env参数没有任何选择


问题答案:

我可以看到您的env变量端口4000是您的服务器端口吗?如果是这样,则必须更改docker
run命令以将端口4000映射为在主机中的端口3000上工作,或者可以将env变量端口更改为3000



 类似资料:
  • 问题内容: 我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器 我也使用docker-compose在docker上运行

  • 问题内容: 当前,我通过使用以下文件运行一个简单的Docker容器。 Docker文件 docker-compose.yml docker-compose.override.yml 我使用Windows映像通过以下命令创建容器,并且可以通过http:// localhost:9091 / 访问它。 我想使用HTTPS而非http访问我的应用程序。 我需要遵循哪些步骤? 问题答案: 您需要配置Web

  • 我无法通过集装箱中的港口连接到django。我使用的地址是:0.0.0.0.:8000,请参阅:http://joxi.ru/Dr8MeGLhkBWnLm.我正在用一个命令创建一个图像和一个容器:“docker compose up-d”。 docker-compose.yaml Dockerfile 如何解决此问题?

  • 我一直在将泽西v2.19与Google AppEngine v1.9.22一起使用,它在本地devserver中运行良好,没有任何问题,但当我尝试将应用程序部署到appEngine时。我得到了多个异常 使用的框架: AppEngineJava1.9.22 泽西2.19 具体化5.1.5 Guice 3. x 格拉德勒 以下是我在日志中得到的例外: org.glassfish.jersey.inte

  • 我正在docker容器中运行sql server` 所有这些都成功完成了。现在,当我尝试使用Java连接到数据库时,我得到了错误。 192.168.56.101是我的虚拟机的ip。我正在虚拟机上运行Linux。 我收到通信链路故障错误。 我在谷歌上搜索并找到了一些关于以下链接的解决方案,但没有一个对我有用。 使用JDBC和MySQL解决“通信链路故障” 如何连接docker中作为容器运行的MySQ