node.js - docker 在容器上运行但不在服务器上运行
问题描述
我在 GitHub 上创建 Jenkinsfile、Dockerfile、Dockerfile.test 到 CI 和 CD 我的服务器 API,我在 Jenkins 上构建它并且构建成功,我的 docker 也在容器上运行,在 Jenkinsfile 阶段,我为测试和部署创建在服务器 API 上,并为容器使用 docker
我也在 docker 上运行 Jenkins,使用 docker-compose
这是我的 ubuntu 服务器上的 Dockerfile
FROM jenkins/jenkins:lts
USER root
这是我在 ubuntu 服务器上的 docker-compose
version: '3'
services:
jenkins:
build: .
container_name: jenkins
privileged: true
restart: always
ports:
- 8080:8080
volumes:
- ./jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
registry:
image: registry
container_name: registry
restart: always
ports:
- 5000:5000
我在上面做了什么,我按照这个指令 然后我尝试 ro 运行它并在我的詹金斯服务器上登录,
我的詹金斯文件是这样的
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 employee-test -f Dockerfile.test --no-cache .'
}
stage('Docker test'){
sh 'docker run --rm employee-test'
}
stage('Clean Docker test'){
sh 'docker rmi employee-test'
}
stage('Deploy'){
if(env.BRANCH_NAME == 'master'){
sh 'docker build -t employee --no-cache .'
sh 'docker run -d -p 4000:4000 -e DB_USERNAME=admin -e DB_PASSWORD=adminxxx -e DB_NAME=employee employee'
}
}
}
catch (err) {
throw err
}
}
和我的 Dockerfile 用于这些工作
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
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN npm -v
RUN node -v
COPY ./server/ /usr/src/app
RUN npm install
EXPOSE 4000
ENV PORT 4000
ENV DB_USERNAME admin
ENV DB_PASSWORD adminxxx
ENV DB_NAME employee
CMD [ "npm", "run", "dev" ]
jenkins 作业成功构建它,在我的 Jenkins 的最后阶段,你可以看到我在我的 ubuntu 服务器上的 docker 容器上运行它,完成后,我尝试在邮递员上调用服务器 API http://ip-server:4000
,但没有任何响应,我确实在我的ubuntu服务器上设置了防火墙tcp
我该如何解决这个问题?所以在詹金斯工作完成后,我想要什么我可以在我的邮递员上调用那个服务器 API 来测试它
解决方案
配置看起来不错,所以似乎 docker compose 缓存了卷,所以请运行此命令来清理所有内容
docker rm employee
docker image rm employee
docker-compose down -v
docker-compose up
请确保詹金斯记录这个
'docker run -d -p 4000:4000 -e DB_USERNAME=admin -e DB_PASSWORD=adminxxx -e DB_NAME=employee employee'
推荐阅读
- layout - SwiftUI - Spacer() 和 Color.clear 之间的区别?
- jquery - 限制最大值共 3 个选择
- scala - 火花循环和长沿袭拖累评估
- angularjs - 如何从 angular8 打开不安全的 URL?
- react-big-calendar - react-big-calendar 如何更新 SASS 变量?
- php - 我如何解决带有键的数组的 FileType Key“类”问题
- python-3.x - 如果数据在使用 Pandas 的列表中匹配,如何删除行
- c# - 服务器返回请求错误,但我的简单帖子看起来正确
- asp.net-mvc - 带有索引的代码中的唯一列不起作用
- java - 用 HoughLinesP 过滤掉相邻的行