docker在容器上运行,但不在服务器上运行 [英] docker run on container but not run on server
问题描述
我创建了Jenkinsfile,Dockerfile,Dockerfile.test以CI和CD在GitHub上创建我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在容器上也运行了, 在Jenkinsfile阶段,我创建测试文件并在服务器API上进行部署, 并将docker用于容器
i create Jenkinsfile, Dockerfile, Dockerfile.test to CI and CD my server API on GitHub, i build it on Jenkins and the build was successfully, and my docker run on the container as well, on Jenkinsfile stages, i create for test and deploy on server API, and using docker for the container
我也在docker上运行Jenkins, 使用docker-compose
i also run Jenkins on docker also, using docker-compose
这是我的ubuntu服务器上的Dockerfile
here is my Dockerfile on my ubuntu server
FROM jenkins/jenkins:lts
USER root
这是我的docker-compose在ubuntu服务器上
and here is my docker-compose on ubuntu server
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运行它并在我的jenkins服务器上登录,
what i did above , i follow this intruction then i tried ro run it and login on my jenkins server,
我的jenkinsfile像这样
my jenkinsfile something like this
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
and my Dockerfile for those jobs
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容器上运行它,完成之后,我尝试在
the jenkins job build it successfully and on the last stage my Jenkins, u can see that i run it on my docker container on my ubuntu server, after that finish, i tried to call server API on postman for http://ip-server:4000
, but it was nothing response, and i did set up the firewall tcp on my ubuntu serrver though
我该如何解决?因此,在詹金斯(Jenkins)工作完成后,我可以在邮递员上调用该服务器API对其进行测试
how can i solve this? so after Jenkins job finish, what i want i could call that server API on my postman to test it
推荐答案
配置看起来不错,所以似乎docker组成了对卷的缓存,所以请运行此命令来清理所有内容
Configuration looks good, So it seems that docker compose caching the volumes so please run this commands to cleanup every thing
docker rm employee
docker image rm employee
docker-compose down -v
docker-compose up
请确保詹金斯将此日志记录下来
Please make sure that jenkins log this
'docker run -d -p 4000:4000 -e DB_USERNAME=admin -e DB_PASSWORD=adminxxx -e DB_NAME=employee employee'
这篇关于docker在容器上运行,但不在服务器上运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!