一、JDK的安装
- 下载jdk1.8到指定目录 (/usr/local/jdk/jdk1.8)
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
- 解压缩
tar -zxvf jdk-8u131-linux-x64.tar.gz
- 配置环境变量
vi /etc/profile
- 在profile文件中追加以下内容
export JAVA_HOME=/usr/local/jdk1.8 -- 此处为你自己的jdk安装目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
- 重新是profile文件生效
source /etc/profile
- 使用
java -version命令验证; 使用echo $JAVA_HOME查看配置后 JAVA_HOME 变量
二、安装Docker
- 若已经安装了旧版本,则先卸载
$ sudo yum remove docker \
docker-client \e
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
-
安装方法:
- 大多数用户会设置Docker的存储库并从中进行安装,以简化安装和升级任务。这是推荐的方法。
- 一些用户下载并手动安装RPM软件包,并完成手动管理升级,这在诸如在无法访问互联网的空白系统上安装Docker的情况下非常有用。
- 在测试和开发环境中,一些用户选择使用自动化便利脚本来安装Docker。
-
使用存储库安装: 在新主机上安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。
- 设置存储库
$ sudo yum install -y yum-utils$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo- 安装Docker引擎
$ sudo yum install docker-ce docker-ce-cli containerd.io- 启动Docker
$ sudo systemctl start docker- 设置 开机启动,下面两钟方式都可以
$ sudo systemctl enable docker$ sudo chkconfig docker on-
为了保证服务器磁盘不被Docker日志打满,所以在这种情况下,我们有必要限制容器日志大小
- 执行以下命令,如果没有 daemon.json 文件,将会自动创建。
vi /etc/docker/daemon.json- 在daemon.json文件内添加以下内容
{ "registry-mirrors": ["https://4s5a1mbp.mirror.aliyuncs.com"], "log-driver":"none", "insecure-registries":["hub.mycompany.com"] }- registry-mirrors为配置阿里云镜像地址
- insecure-registries为我们的私有仓库地址,如果不配置私有仓库地址,我们在使用推送自己的镜像到私有仓库会发生错误
- log-driver 设为none,docker容器将不会输出日志,防止磁盘很快被打满(是否为必须配置视情况而定)
-
加载配置文件并重启
systemctl daemon-reload systemctl restart docker- 默认情况下,使用docker run命令, docker会随机分配一个内网地址,以172.17开头,但随着容器删除,在运行该镜像时ip地址发生变化,如果需要固定ip,根据我们的情况,我们在docker主机上新建一个网络。(以下命令,设置了以 172.16开发的网段)
docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app 使用以下命令可以查看我们新建的网络
docker network lsNETWORK ID NAME DRIVER SCOPE 5df024ae25e2 app bridge local 16cf9a89827f bridge bridge local ba0975753843 host host local 557cd83e2872 none null local
三、安装docker-compose
- 执行以下命令安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
- 测试安装
$ docker-compose --version
docker-compose version 1.27.1, build 1110ad01
- 修改服务器hosts文件中配置,添加如下内容: 公司Docker的镜像仓库IP 以及 域名
vi /etc/hosts
10.123.123.123 harbor.mycompany.com
根据提示输入用户名和密码登录
四、安装 Git
yum install git
- 拉取项目代码
git clone 代码托管地址
- 切换到目标分支
git checkout -b dev/1.0.1 remotes/origin/dev/1.1.0
五、安装MySQL数据库
- 执行以下命令
docker run -p 3306:3306 --restart=always --net app --ip 172.16.1.6 -e TZ=Asia/Shanghai -v=/docker/mysql/conf/my.cnf:/etc/my.cnf -v=/docker/mysql/data:/var/lib/mysql --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- 备注:
- 使用数据库客户端测试连接,使用的IP为宿主机的IP。
- 容器间通讯的时候,通过
--ip 172.16.1.6指定的 ip 将作为 容器间通讯的 ip 地址。
- 参数说明
-p 3306:3306 指定端口映射 , 宿主机端口:容器端口
--restart=always 当 Docker 重启时,容器自动启动
--net app 指定容器的网络连接类型,app是我们在之前的步骤中创建的内网
--ip 172.16.1.6 指定docker容器的内网ip
-e TZ=Asia/Shanghai -e 设置环境变量;指定mysql的时区
-v=/docker/mysql/conf/my.cnf:/etc/my.cnf 指定MySQL容器内的配置文件挂载到宿主机的目录
-v=/docker/mysql/data:/var/lib/mysql 指定MySQL容器内的数据挂载到宿主机的目录
-e MYSQL_ROOT_PASSWORD=123456 -e 设置环境变量;此处为设置MySQL的root用户密码
-d 后台运行mysql容器,并且返回容器id
--name mysql5.7 指定容器名称
六、安装nginx服务器
- 执行以下命令(启动参数解释同MySQL步骤)
docker run -p 80:80 --restart=always --net app --ip 172.16.1.5 --name nginx -v /docker/nginx/html:/usr/share/nginx/html -v /docker/nginx/config:/etc/nginx/conf.d -v /docker/nginx/logs:/var/log/nginx/ -d nginx
-v /docker/nginx/html:/usr/share/nginx/html指定挂载到的宿主机地址/docker/nginx/html下,该目录为前端项目的部署目录。- 修改nginx的配置文件,可直接在宿主机挂载到的目录进行修改(需要配置路径, 代理等),如下:
server {
listen 80;
listen [::]:80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /data {
root /usr/share/nginx/html;
}
location /prod {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /test {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /prod {
proxy_pass http://prod:8091/prefix;
}
location /test {
proxy_pass http://test:8091/prefix;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
七、安装maven
- 下载你需要的版本(本文安装的为3.6.3) maven.apache.org/download.cg…
- 创建你需要安装到的目标目录,并将你下载的压缩包上传到指定目录
mkdir /usr/local/maven
- 执行命令,解压缩文件,解压完成后下载的压缩文件
tar zxvf apache-maven-3.6.3-bin.tar.gz
- 编辑配置文件,设置本地仓库地址和远程仓库地址
<!-- 设置仓库地址 -->
<localRepository>/usr/local/maven/repository</localRepository>
<!--阿里云镜像仓库 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
-
配置maven的环境变量
- 修改环境变量
vi /etc/profile- 追加以下内容
MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin- 保存
source /etc/profile- 查看版本
mvn -version
八、安装Jenkins
- 使用war包安装,在Jenkins war包所在的目录指定的目录
nohup java -jar jenkins.war --httpPort=8081
- 安装完成后,如果访问不到,可能是端口未开放导致的
- Jenkins安装完成后,一般需要安装一些插件,比如maven插件,docker插件,docker compose插件。
九、一些需要配置的额外信息
-
项目分为开发和测试环境,当我们使用Jenkins发布开发环境的时候,会自动创建镜像并且推送到公司的镜像仓库,我们在测试环境,使用docker compose命令指定配置文件,部署项目
-
第一次发布项目后,项目无法连接到数据库,因为 项目容器 和 MySQL容器 之间属于docker的容器通信,但是项目中配置的数据库IP为宿主机的IP地址,所以造成无法访问数据库
-
在docker compose文件中配置 域名 和 IP 映射 , 如下:
extra_hosts: - "gold.mysql.com:172.16.1.6" - "gold.minio.com:172.16.1.4"gold.mysql.com:域名,可以在 直接使用 该域名 替代配置中的数据库地址
172.16.1.6: MySQL在docker内网中 IP 地址