我有我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'
}
}
}
}
1条答案
按热度按时间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命令重建镜像。它可能是这样的(出于开发目的):