我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器
我也使用docker-compose在docker上运行Jenkins
这是我的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
我在上面所做的事情,我遵循了这个指示, 然后尝试运行它并在我的jenkins服务器上登录,
我的jenkinsfile像这样
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容器上运行它,完成之后,我尝试为postman调用服务器API http://ip-server:4000,但这没有任何反应,而且我确实在ubuntu serrver上设置了防火墙tcp
http://ip-server:4000
我该如何解决?因此,在詹金斯(Jenkins)工作完成后,我可以在邮递员上调用该服务器API对其进行测试
配置看起来不错,所以似乎docker组成了对卷的缓存,所以请运行此命令清除所有内容
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'