docker在容器上运行,但不在服务器上运行 [英] docker run on container but not run on server

查看:169
本文介绍了docker在容器上运行,但不在服务器上运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了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容器上运行它,完成之后,我尝试在的postman上调用服务器API,但这没什么反应,尽管我确实在我的ubuntu服务器上设置了防火墙tcp

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆