docker正在运行,但无法在服务器上访问 [英] docker running but can't access on the server

查看:553
本文介绍了docker正在运行,但无法在服务器上访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有Jenkins作业的阶段,可以通过docker测试和部署我的nodejs,我在端口3000上运行docker,但是当我尝试浏览我的 ip-server:3000 时,它不起作用,也没什么
我的码头工人正在运行

I have stages for Jenkins jobs to test and deploy my nodejs with docker, I run docker on port 3000 but when I tried to browser my ip-server:3000, it doesn't work and nothing my dockers are running

这是我的Jenkinsfile

here is my 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:

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

I run Jenkins via docker-compose on my ubuntu server, is that something I missing or wrong ?? because my goal here using Jenkins to test my server and after the test successfully it gonna deploy my Nodejs on my ubuntu server so after building finish on Jenkins, I could browser my server API on the browser to make sure it works on ip-sever:3000

上运行,但是在上面的管道中,是正确的吗?在我精通主服务器时,无需单击Jenkins上的立即构建即可更新服务器API?如果不是,该如何配置?

but on the above pipeline, is that correct that job do every time I push to master, my server API will be updated without click build now on Jenkins? if not, how to configure it?

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

I am also don't know how to hide my ENV, so I show up on my stage Jenkinsfile because on multibranches pipeline does not have any option for env parameters

推荐答案

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

I can see your env variable port 4000 is that your server port ? If it's so you have to change docker run command to map port 4000 to work on port 3000 in your host, or you can change your env variable Port to be 3000

这篇关于docker正在运行,但无法在服务器上访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆