目前的实训使用的是单机jenkins,没有使用容器,mysql实训上线,需要操作mysql数据库,如果不使用容器,mysql装在真机环境中,则不能同时操作,如创建表操作,一个人操作后,另一个人不能再创建同名表,并且更新数据库后,所有人都被影响。
解决方案:
1.首先,不使用容器,mysql装在真机环境中,为每个人见一个mysql数据库,每个人在自己的数据库中操作。这种操作没 尝有试过建立很多个数据库和同时操作多个数据库,如果想采用这种方案,可以立即测试。
2.采用jenkins+Docker plugin:为每个用户的每次构建创建一个mysql容器,用户的所有操作都是在自己的容器中,操作完成后,将容器销毁,容器数据通过Docker volume挂载的方式保存在磁盘。
目前jenkins Docker plugin的master和子节点(容器)通信有两种方式:
a)采用SSH,每个镜像中都必须手动安装SSH(效率高,可靠性好,官方文档给的方案)
b)采用JNLP 方式:需要jar包支持,每个镜像启动后,先回自动从master节点下载slave.jar包(这种方式使用java的网络通信方式,效率不高)
3. 采用Jenkins+k8s plugin: 这种方式没有什么问题,就是效率问题比较大,还没有解决,每次构建需要10s左右。