docker正在运行,但无法在服务器上访问
我有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 imageFROM 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 now
Jenkins 即可更新服务器API ?如果没有,该如何配置?
我也不知道如何隐藏我的ENV,所以我出现在舞台Jenkinsfile上,因为在多分支管道上,env参数没有任何选择
回答:
我可以看到您的env变量端口4000是您的服务器端口吗?如果是这样,则必须更改docker
run命令以将端口4000映射为在主机中的端口3000上工作,或者可以将env变量端口更改为3000
以上是 docker正在运行,但无法在服务器上访问 的全部内容, 来源链接: utcz.com/qa/424774.html