操作
创建一个nodejs-web任务,gitlab push提交后,自动触发jenkins构建任务
流程图
image.pngjenkins配置
jj-1-1.png jj-2-1.png jj-2-2.png jj-2-4.pnggitlab配置
给gitlab管理员身份进入,在每个项目中:Settings -> Integrations 页面中进行设置
jj-2-g5.png jj-2-g6.png jj-2-g7.png jj-2-g8err.png jj-2-g8ok.png jj-2-g9.png脚本文件
基于Vue的Dockerfile
FROM node:10.9.0-alpine
# fix "could not get uid/gid" error
RUN npm config set unsafe-perm true
# install simple http server for serving static content
RUN npm install -g http-server
# make the 'app' folder the current working directory
WORKDIR /app
# copy both 'package.json' and 'package-lock.json' (if available)
COPY package*.json ./
# install project dependencies
RUN npm install --registry=https://registry.npm.taobao.org
# copy project files and folders to the current working directory (i.e. 'app' folder)
COPY . .
# build app for production with minification
RUN npm run build:prod
EXPOSE 8080
CMD [ "http-server", "dist" ]
Jenkinsfile
#!/usr/bin/env groovy
def url = "http://192.168.31.100:8088/nodejs/web.git"
def credentialsId = "850f1ba0-caf8-416f-9d9e-130403e93730"
def containerName = "nodejs-web"
def sourcePort = 8080
def targetPort = 9002
def imageUrl = "reg.htwy.com/nodejs/${containerName}:${env.BUILD_NUMBER}"
node() {
stage ('checkout') {
git url: url, credentialsId: credentialsId
}
stage ('build and push image') {
sh "docker build -t ${imageUrl} ."
sh "docker push ${imageUrl}"
}
stage ('Run container') {
try {
// 默认 停止、删除 容器
sh "docker ps -f name=${containerName} -q | xargs --no-run-if-empty docker container stop"
sh "docker container ls -a -f name=${containerName} -q | xargs -r docker container rm"
//运行新容器
sh "docker run -it -d --name ${containerName} -p ${targetPort}:${sourcePort} ${imageUrl}"
} catch (error) {
error.printStackTrace()
} finally {
}
}
}
基于Eggjs的Dockerfile
FROM node:8.6.0-alpine
RUN apk --update add tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# add npm package
COPY package.json /usr/src/app/package.json
RUN npm i --registry=https://registry.npm.taobao.org
# copy code
COPY . /usr/src/app
EXPOSE 7001
CMD npm start
网友评论