我有Jenkins作业的阶段,可以使用docker测试和部署我的nodejs,我在端口3000上运行docker,但是当我尝试浏览我的docker时ip- server:3000,它不起作用,并且我的docker没有运行
ip- server:3000
这是我的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
ip- sever:3000
但是在上面的管道中,每次我推动掌握时,这样做是正确的吗,无需单击build nowJenkins 即可更新服务器API ?如果没有,该如何配置?
build now
我也不知道如何隐藏我的ENV,所以我出现在舞台Jenkinsfile上,因为在多分支管道上,env参数没有任何选择
我可以看到您的env变量端口4000是您的服务器端口吗?如果是这样,则必须更改docker run命令以将端口4000映射为在主机中的端口3000上工作,或者可以将env变量端口更改为3000