栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Linux系统:第十四章:安装Docker,java面试编译原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux系统:第十四章:安装Docker,java面试编译原理

systemctl restart docker

#centos开放端口宿主机访问

firewall-cmd --add-port=9004/tcp --permanent

firewall-cmd --reload

#查询端口是否开启命令

firewall-cmd --query-port=9004/tcp

#除此之外还可以开机自启动,将firewalld起起来即可,并且允许其自启动

systemctl start firewalld

systemctl enable firewalld

#如果出现Failed to start firewalld.service: Unit is masked.错误则执行以下命令

systemctl unmask firewalld

#浏览器访问,查看docker版本信息

http://xx.xx.xx.xx:9004/version

#如果无法访问,重启服务器查看端口

telnet localhost 9004

#如果不小心删除了/var/lib/docker导致后面拉取镜像时报错open /var/lib/docker/tmp/GetImageBlob974299692: no such file or directory,不用改什么操作,重启docker即可

systemctl daemon-reload

systemctl restart docker

三、安装配置gitlab

=========================================================================

#gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本

docker pull gitlab/gitlab-ce

#创建gitlab日志,数据,配置的存放路径,通常会在构建容器的时间,会把配置 (etc) 、 日志 (log) 、数据 (data) 放到容器外面,方便后期数据迁移或者修改配置

sudo mkdir -p /docker/gitlab/config /docker/gitlab/logs /docker/gitlab/data

#构建容器

sudo docker run --detach

–hostname gitlab

–publish 8011:443

–publish 8012:8012

–publish 8013:22

–privileged=true

–name gitlab

–restart always

–volume /docker/gitlab/config:/etc/gitlab

–volume /docker/gitlab/logs:/var/log/gitlab

–volume /docker/gitlab/data:/var/opt/gitlab

–volume /docker/gitlab/logs/reconfigure:/var/log/gitlab/reconfigure

gitlab/gitlab-ce:latest

#添加配置

sudo vi /docker/gitlab/config/gitlab.rb

#添加下面3行

#配置http协议所使用的访问地址,不加端口号默认为80

external_url ‘http://xx.xx.xxx.xxx:8012’

#配置ssh协议所使用的访问地址和端口

gitlab_rails[‘gitlab_ssh_host’] = ‘xx.xx.xxx.xxx’

#此端口是run时22端口映射的8013端口

gitlab_rails[‘gitlab_shell_ssh_port’] = 8013

#保存推出

:wq

#看个人需要,一般而已都会限制内存,也可以在docker启动的时候配置,命令为-m 4G

docker update --memory 4096m --memory-swap -1 gitlab

#重启gitlab

docker restart gitlab

#更新授权

sudo docker exec -it gitlab update-permissions

#进入gitlab容器

docker exec -it gitlab bash

#重新载入配置文件,并开启

gitlab-ctl reconfigure

gitlab-ctl start

#查看密码

gitlab-rails console production

#进入gitlab控制台

gitlab-rails console -e production

#获得用户数据,修改用户密码

user = User.where(id: 1).first

user.password=‘2YkDixw6xJiD/68kCsAZBu9W9ZhGdRlT0YykDYiOvOAE=1’

user.password_confirmation=‘2YkDixw6xJiD/68kCsAZBu9W9ZhGdRlT0YykDYiOvOAE=1’

user.save!

quit

#重启gitlab需要等待一段时间才能访问,否则会出现502,如果出现502,还有可能是内存不够的原因,建议查看docker容器的gitlab日志

docker restart gitlab

四、安装配置jekins

=========================================================================

一、准备工作



#上传jdk到自定义目录,这里提供jdk1.8的linux版本,从官网拉下来的

链接:https://pan.baidu.com/s/1nAVgmke9RbF8MnXo33S72Q

提取码:mvsq

#查看版本

java -version

#上传maven到自定义目录,这里提供maven3.8.3的linux版本,从官网拉下来的

链接:https://pan.baidu.com/s/1rC4NsMX5i0669_ONJV3MJA

提取码:ek1p

#查看版本

mvn -v

#关于git其实可以使用默认的git,进入到容器中通过以下命令进行查看git版本

git --version

#当前也可以自行安装git,在docker容器启动的时候配置映射路径,并且在/etc/profile的path路径中添加git安装路径即可,可通过以下命令查看git安装路径

which git

#需要注意的是docker容器每次重新启动,会将容器内部生成的ssh key移除掉,所以我们可以通过映射路径或者复制宿主机的ssh key到容器内部,也可以重新生成然后去到gitlab的ssh key配置。下面的邮箱为你github、gitee或者gitlab登录的邮箱,执行命令之后,连续三次回车即可生成,生成git的ssh key命令:

ssh-keygen -t rsa -C “java_wxid@aliyun.com”

查询生成的ssh key的路径:

cd ~/.ssh

#外部配置的jdk和maven需要映射到jenkins容器,所以相关的配置也需要映射进去,所以需要提前在宿主机配置

vim /etc/profile

#在最后一行添加java环境变量和maven环境变量

#java环境配置

export JAVA_HOME=/opt/java/jdk

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=./:JAVA_HOME/lib:$JRE_HOME/lib

#maven环境配置

export M2_HOME=/opt/java/maven

#git环境配置

export GIT_HOME=/opt/java/git

#path

export PATH=/bin:/usr/bin:/sbin:/usr/sbin: J A V A H O M E / b i n : JAVA_HOME/bin: JAVAH​OME/bin:M2_HOME/bin: G I T H O M E / b i n : GIT_HOME/bin: GITH​OME/bin:PATH

#立即重载配置

source /etc/profile

#查看版本信息

mvn -v


二、下载安装配置Jenkins


#下载Jenkins的Docker镜像

docker pull jenkins/jenkins:lts

#创建jenkins工作目录的存放路径

sudo mkdir -p /docker/jenkins/data

#在Docker容器中运行Jenkins

docker run -p 8014:8080 -p 8015:5000 --name jenkins -m 2G

-u root

–restart always

-v /docker/jenkins/data:/var/jenkins_home

-v /etc/localtime:/etc/localtime

-v /usr/local/src/apache-maven-3.8.3:/opt/java/maven

-v /usr/local/src/jdk1.8.0_301:/opt/java/jdk

-v /etc/profile:/etc/profile

-v /root/.ssh/id_rsa:/root/.ssh/id_rsa

-v /var/run/docker.sock:/var/run/docker.sock

-v /bin/docker:/usr/bin/docker

-d jenkins/jenkins:lts

#暂停jenkins

docker stop jenkins

#看个人需要,一般而已都会限制内存,可以在docker启动命令中配置,配置命令为-m 2G

docker update --memory 2048m --memory-swap -1 jenkins

#开启jenkins

docker start jenkins

#进入jenkins容器

docker exec -u 0 -it jenkins /bin/bash

#立即重载配置

source /etc/profile

#查看root密码

cat /var/jenkins_home/secrets/initialAdminPassword

#如果提示cat: /var/jenkins_home/secrets/initialAdminPassword: No such file or directory通过查找文件的方式查看密码

find / -name config.xml

一般会出现:

/var/jenkins_home/users/root_9685925808796613467/config.xml

/var/jenkins_home/config.xml

选择用户名相关的文件:

cat /var/jenkins_home/users/root_9685925808796613467/config.xml

找到passwordHash标签:

#jbcrypt:$2a 10 10 10yB8omAzzWpk1oNToWQPIWewpqBKbhJGUU5UDd470yJCN3HVXqCDc6

密码就在#jbcrypt:后面,即

$2a 10 10 10yB8omAzzWpk1oNToWQPIWewpqBKbhJGUU5UDd470yJCN3HVXqCDc6

我们可以改成:

$2a 10 10 10DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS

即密码:111111

或者

#jbcrypt:$2a 10 10 10MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq

即密码:123456

使用root用户登录即可

上面那串如何生成的呢?

Jenkins采用Java加密工具jBCrypt,所以我们在生成密码的时候需要添加相关的jar包。

org.mindrot

jbcrypt

0.4

// 加密

String admin = BCrypt.hashpw(“admin”, BCrypt.gensalt());

System.out.println(“加密:”+admin);

// 解密

if(BCrypt.checkpw(“admin”,admin)){

System.out.println(“is match”);

} else {

System.out.println(“is not match”);

}

#如果启动容器的时候未设置开机自启动,也可以通过以下命令配置docker的容器开机自启动:docker update --restart=always 镜像ID

docker update --restart=always e39a959d7bff

#重启jenkins

docker restart jenkins

#如果出现jenkins实例已离线的情况,访问以下链接

http://ip:port/pluginManager/advanced

在Update Site下面替换以下链接

http://updates.jenkins.io/current/update-center.json

五、jenkins主要的一些配置

=============================================================================

#系统配置中配置jdk,maven路径

#全局工具配置,配置jdk,maven,git路径和上面的路径要保持一致

#凭据配置,有些页面无法出来页面,可以通过http://ip:port/credentials/进行访问

#插件看个人需要

#配置时间,脚本命令行中执行

点击进入脚本命令行将以下命令运行即可。

system.setProperty(‘org.apache.commons.jelly.tags.fmt.timeZone’, ‘Asia/Shanghai’)

六、项目配置

===================================================================

#创建项目

#配置项目

![在这里插入图片描述](https://img-blog.csdnimg.cn/2145879810914fc8a35ff027ebcf24f0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

2s,shadow_50,text_Q1NETiBAamF2YV93eGlk,size_19,color_FFFFFF,t_70,g_se,x_16)

#编写shell脚本

#!/bin/bash

制定打包模块

arr=(community-starters/community-xxx-starter:8081)

#加前缀

suffix="-"${BUILD_ENV}

#自定义网络

ip_param=’’

echo “当前环境”${BUILD_ENV}

#如果执行dev环境,走以下流程

if [ ${BUILD_ENV} == “dev” ];then

如果是在本机上安装就使用内网ip,这样速度会快很多,内网ip查询:ifconfig -a

echo ‘export DOCKER_HOST=“tcp://xxx.17.0.1:8010”’

export DOCKER_HOST=“tcp://xxx.17.0.1:8010”

#通过命令docker network create --driver bridge --subnet=xxx.30.0.0/16 common-network创建自定义网段,docker network inspect common-network进行查看,配置的时候,不要以0结尾,如以下配置即可:

ip_param=’–ip xxx.30.0.2’

fi

for 遍历

for mp in ${arr[*]}

do

#截取字符串获得module名称和端口

path=${mp%}

module=${path#*/}

#arr中配置了端口:8081

port=${mp#*:}

#arr中配置了,container_name=community-starters/community-xxx-starter-dev

container_name= m o d u l e module modulesuffix

#arr中配置了,image_name=community-starters/community-xxx-starter-dev

image_name= m o d u l e module modulesuffix

echo "开始构建: " c o n t a i n e r n a m e " : " container_name":" containern​ame":"port

CID= ( d o c k e r p s − a ∣ g r e p " (docker ps -a | grep " (dockerps−a∣grep"container_name")

if [ “$CID” != “” ];then

echo “删除现有容器”

docker stop $container_name

docker rm $container_name

fi

echo “移除镜像” : $image_name

docker rmi $image_name

cd $module

echo “当前路径” (pwd)

echo “构建容器”: $container_name

docker build -t $container_name .

echo “启动容器” : $container_name

docker run --name $container_name --restart=always -d -p 8081:8081 -p 8082:8082-p 8083:8083 -e TZ=Asia/Bangkok -v /root/fragant/logs:/root/logs:z -v /etc/localtime:/etc/localtime:z -e SPRING_PROFILES_ACTIVE=qa -m 2G $image_name

echo “连接容器网络” : $ip_param $container_name

docker network connect $ip_param common-network $container_name

echo “执行完成”

done

内网ip查询

#项目结构

#编写Dockerfile

FROM openjdk:8-alpine

MAINTAINER community-xx-starter

ADD target/community-xx-starter.jar /community-xx-starter.jar

EXPOSE 8081

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683510.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号