当前位置:   article > 正文

docker 安装并运行jenkins 后不识别服务器上的jdk,maven等配置!_docker安装jenkins后 配置全局jdk maven路径不识别

docker安装jenkins后 配置全局jdk maven路径不识别

公司测试环境搭建jenkins自动构建部署,采用的是一套docker安装运行,比如mysql,redis,nginx,zk,es等都是用的docker拉取并运行,jenkins也不例外,后面发现jenkins上配置构建项目时,通过报错信息发现jenkins不识别mvn命令,不识别java命令,不识别自定义的maven本地仓库地址,但是服务器环境上又是有目录,java和mvn命令正常的。。

原理:docker通过镜像创建并启动容器,一个容器就是一个独立隔离的沙箱,所以并不能识别服务器上的环境配置,需要我们在启动容器时通过-v参数命令将服务器目录挂载到docker容器指定目录!拿jenkins举例来说,如果你是用docker运行的jenkins,那么是不识别你服务器上配置的jdk环境和maven环境的,你在jenkins里系统配置中去填写你服务器上的jdk目录和maven目录以及配置文件目录,后面项目构建是肯定会报错不识别的。jenkins所在的容器是docker某个具体容器,它只能识别出这个容器里的东东,容器自己有一套独立完整的目录,可以通过命令 docker exec -it containerID /bin/bash 进入指定的容器id查看(containerID换成你的docker容器id)。

解决办法:核心是通过创建启动docker容器时带上-v参数命令,将将服务器目录挂载到docker容器目录。

一般docker都喜欢用docker-compose.iml配置文件来保存配置命令等,方便快捷

进入配置文件所在然后执行命令

cd /data/docker-services/docker-compose
sudo docker-compose up -d jenkins

(切记不使用sudo docker-compose restart  jenkins,如果修改了docker-compose.iml,该命令还是不生效,请使用上面那个!!)

docker-compose.iml文件内容如下:

version: '3'
services:
  redis: 
    image: redis:alpine
    container_name: cdc-redis
    restart: always
    volumes:
      - ../data/redis:/data
    environment:
      - REDIS_PASSWORD=redis123
    networks:
      - cdc-net
    ports:
      - 8379:6379

  redis-withpass:
    image: redis:alpine
    container_name: cdc-redis-withpass
    command: redis-server --requirepass redis123
    restart: always
    volumes:
      - ../data/redis-withpass:/data
      - ./redis/redis.conf:/etc/redis/redis.conf
    networks:
      - cdc-net-1
    ports:
      - 7379:6379

  zookeeper:
    image: zookeeper:latest
    container_name: cdc-zookeeper
    restart: always
    volumes:
      - ../data/zookeeper:/data
      - ../data/zookeeper:/datalog
    networks:
      - cdc-net
    ports:
      - 2181:2181

  rabbitmq:
    image: rabbitmq:3.7-management-alpine
    container_name: cdc-rabbitmq
    restart: always
    volumes:
      - ../data/rabbitmq:/var/lib/rabbitmq/mnesia
    networks:
      - cdc-net
    ports:
      - 5672:5672
      - 15672:15672
    environment:
      - RABBITMQ_DEFAULT_USER=rabbitmq
      - RABBITMQ_DEFAULT_PASS=rabbitmq123

  postgres:
    image: postgres:9.6-alpine
    container_name: cdc-postgres
    restart: always
    volumes:
      - ../data/postgres:/var/lib/postgresql
    networks:
      - cdc-net
    ports:
      - 5432:5432
    environment:
      - POSTGRES_PASSWORD=postgres123

  mysql:
    image: mysql:5.7
    container_name: cdc-mysql
    restart: always
    networks:
      - cdc-net
    ports:
      - 8306:3306
    volumes:
      - ../data/mysql:/var/lib/mysql
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: mysql123

  jenkins:
    image: jenkins/jenkins:alpine
    container_name: cdc-jenkins
    restart: always
    networks:
      - cdc-net
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ../data/jenkins:/var/jenkins_home
      - /usr/java/jdk1.8.0_221-amd64:/usr/java/jdk1.8.0_221-amd64
      - /home/maven:/home/maven


networks:
  cdc-net:
    external: false
  cdc-net-1:
    external: false

 

 

核心点在于挂载

volumes:
      - ../data/jenkins:/var/jenkins_home
      - /usr/java/jdk1.8.0_221-amd64:/usr/java/jdk1.8.0_221-amd64
      - /home/maven:/home/maven

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/244975
推荐阅读
相关标签
  

闽ICP备14008679号