Docker 安装Jenkins

启动docker,查找Jenkins镜像文件

docker search jenkins (jenkins已经弃用,所以选择jenkins/jenkins)

下载Jenkins镜像文件

docker pull jenkins/jenkins:lts

2.创建Jenkins挂载目录并授权权限,这样我们就可以很方便地对容器内的配置文件进行修改。

mkdir -p /data/jenkins_home/ chmod 777 /data/jenkins_home/

3.创建并启动Jenkins容器(挂载了本地maven和jdk和maven本地仓库的地址)

这里需要注意的有两个地方:

因为我的Jenkinsfile 需要docker 使用挂载了docker

maven也是挂载本地的maven 使用需要授权宿主机maven仓库的地址

chmod 777 maven仓库地址文件夹 #也可能遇到挂载的docker文件夹和相关命令 容器的用户无权限使用 #使用项目两个命令 不过只是临时解决方案 如果重启服务器 权限会变回原来的 chmod 777 /var/run/docker.sock chmod 777 /usr/bin/dockers #如果想永久解决权限问题使用项目的命令 在启动容器的时候指定启动用户 docker run -d -p 8090:8080 -p 8091:50000 -u root \

docker run -d -p 8090:8080 -p 8091:50000 -u root \ -v /mydata/jenkins_home:/var/jenkins_home \ -v /mydata/apache-maven-3.6.3:/usr/local/maven \ -v /usr/local/jdk1.8.0_181:/usr/local/jdk1.8 \ -v /etc/localtime:/etc/localtime \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ -v /usr/local/MavenRepository:/usr/local/MavenRepository \ -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \ -v /var/lib/docker/tmp:/var/lib/docker/tmp \ --restart=always \ --privileged=true \ --name jenkins jenkins/jenkins:lts

错误配置:修改 vi  hudson.model.UpdateCenter.xml里的内容(这是一个坑 如果配置了下载插件货下载不全)

vim ./hudson.model.UpdateCenter.xml

将 url 修改为 清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

登入jenkins 在docker logs jenkins 查看第一次登入的密码

dome运行的Jenkinsfile

pipeline {
  agent any

  tools {
          maven 'maven'
      }
    parameters {
        string(name:'TAG_NAME',defaultValue: '',description:'')
    }

    environment {
        DOCKER_CREDENTIAL_ID = '墨风如吹雪'
        GITHUB_CREDENTIAL_ID = 'zp872571679'
        KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
        REGISTRY = 'registry.cn-hangzhou.aliyuncs.com'
        DOCKERHUB_NAMESPACE = 'zp_gulimall'
        APP_NAME = 'docker-test'
    }

    stages {
        stage ('checkout scm') {
            steps {
                checkout(scm)
            }
        }

        stage ('运行测试程序') {
            steps {
                sh 'mvn clean  -gs /usr/local/maven/conf/settings.xml test'
            }
        }

        stage ('打包并上传到docker镜像仓库') {
            steps {
               sh 'mvn  -Dmaven.test.skip=true -gs /usr/local/maven/conf/settings.xml clean package'
               sh 'docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .'
               withCredentials([usernamePassword(credentialsId: 'ALIYUN_DOCKER_ACCOUNT', passwordVariable: 'password', usernameVariable: 'username')]) {
                    sh 'docker login $REGISTRY --username=${username} --password=${password}'
               }
               sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER'
            }
        }

        stage ('把最后的版本 push打包成tag 打包并上传到docker镜像仓库') {
           steps {
               sh 'docker tag  $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest '
               sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest '
           }
        }

         stage ('部署到dev环境') {
            steps {
                input (id: 'deploy-to-dev', message: '是否部署到dev环境运行?')
                    sh 'docker stop $APP_NAME '
                    sh 'docker rm $APP_NAME '
                    sh 'docker run -d -p8080:8080 --name $APP_NAME $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:latest '
                }
          }

        stage ('推送相关的tag到git仓库'){
          steps {
                input (id: 'release-image-with-tag', message: '是否发布镜像版本?')
                sh 'git config --global user.email "872571679@qq.com" '
                sh 'git config --global user.name "zp" '
                sh 'git tag -a $TAG_NAME -m "$TAG_NAME" '

                withCredentials([usernamePassword(credentialsId: 'zpGitee', passwordVariable: 'password', usernameVariable: 'username')]) {
                    sh 'git push https://${username}:${password}@gitee.com/zp872571679/docker-test.git --tags'
                }

                sh 'docker tag  $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME '
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME '
          }
        }
    }
}

不出现明码出现的密码和账户所以不安全,使用启用jemkins的全局凭证管理

去到 Jenkins 的【系统管理】→ 【Manage Credentials】下:

然后创建相关的凭证 在jenkinsfile里面使用

安装nacos

#查看版本
docker search nacos
#下载最新的镜像
docker pull nacos/nacos-server
#创建文件夹 方便挂载
mkdir -p /mydata/nacos
cd /mydata/nacos
#因为绑定本地数据库 实现数据持久化 需要找到本地mysql容器通信的ip
docker network inspect bridge
"Containers": {
            "132860eb2e90f245f74d32e148bd05010397f6e601cfde87bcc4b4ca652ed04b": {
                "Name": "mysql",
                "EndpointID": "ccffaa0778264ad4852493ebd9b1edc840b904e5ea15fcd9daefc4a2b5d72481",
                "MacAddress": "02:42:ac:11:00:05",
                "IPv4Address": "172.17.0.5/16",
                "IPv6Address": ""
            },
 
#挂载对应目录启动nacos
docker run -d \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.0.100 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--restart=always \
--privileged=true \
--name nacos \
-v /mydata/nacos/logs:/home/nacos/logs \
--network gulimallNet --ip 172.18.0.101 \
nacos/nacos-server:latest

mysql 开启忽略大小写

项目启动报错 JobPersistenceException: Couldn't retrieve trigger: Table 'leo_quartz.QRTZ_TSSDRS' doesn't exist [See nested exception: com.mysql.jdbc.excep tions.jdbc4.MySQLSyntaxErrorException: Table 'leo_quartz.QRTZ_TSSDRS' doesn't exist] 需要改 MySQL 的配置文件,Linux 下 MySQL 的配置文件可能是 /etc/my.cnf,或 /etc/mysql/my.cnf,这依赖于你的安装方式。假如是 /etc/my.cnf,那么执行 lower_case_table_names=1

如果想学习或者其他的操作可以去下面地址下载:

https://gitee.com/zp872571679/docker-test.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值