如何为使用Docker Composer运行Node js应用程序实现jenkins ci/cd pipeline

rslzwgfq  于 2023-04-29  发布在  Jenkins
关注(0)|答案(1)|浏览(149)

我有我dockerized的NodeJS应用程序。我正在使用docker compose在服务器上运行此应用程序。
Dockerfile:

FROM node:18

WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3030
CMD ["npm", "start"]

docker-compose.yml

version: '3'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - '3030:3030'
    depends_on:
      - redis
  redis:
    image: redis

这是否可以实现Jenkins,它应该从Github存储库更新项目源代码,并在更新源代码(git pull)后再次运行docker compose up -d --build
以下是Jenkins文件示例:

pipeline {
  agent {
    docker {
      image 'node:lts-bullseye-slim'
      args '-p 3000:3000'
    }
  }
  stages {
    stage ('Build') {
      steps {
        sh 'npm install'
      }
    }
    stage ('Deploy') {
      steps {
        sh 'cd ~/projects/jenkins-starter-nodejs-app'
        sh 'docker compose down'
        sh 'docker compose up -d --build'
      }
    }
  }
}
3b6akqbq

3b6akqbq1#

是的,有可能。你必须安装和配置特定的插件。让我们假设我们正在谈论与GitHub的集成。
1.安装此插件https://plugins.jenkins.io/github/
1.启用GitHub hook trigger for GITScm polling
1.添加Jenkins webhook URL并在GutHub repo设置中选择push事件类型
Step by step instruction for non-multibranch job
配置步骤取决于Jenkins作业的类型https://docs.cloudbees.com/docs/cloudbees-ci-kb/latest/client-and-managed-masters/github-webhook-configuration
在您的示例中,所有命令都在容器内执行,并且容器在管道执行后被销毁。如果你想在作为节点连接到Jenkins的服务器上运行你的应用程序,你可以通过docker compose命令重建镜像。它可能是这样的(出于开发目的):

pipeline {
  agent {
    label '<node_name>'
  }

  stages {
    stage('Build and Deploy') {
      steps {
        sh 'docker-compose up --build --force-recreate -d'
      }
    }
  }
}

相关问题