docker-偌依 项目部署

配置环境

1
2
3
4
5
6
7
8
配置jenkins与前端服务器与git连接

10.31.162.25 nginx-server
10.31.162.32 java-server
10.31.162.35 jenkinx-server
10.31.162.39 mysql-redis-server
10.31.162.124 haobor-server
10.31.162.125 git-server

安装前端服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
10.31.162.25	nginx-server
安装docker
[root@nginx-server ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 git
[root@nginx-server ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@nginx-server ~]# yum install -y docker-ce
[root@nginx-server ~]# systemctl start docker && systemctl enable docker
[root@nginx-server ~]# mkdir /application/nginx/{logs,html} -p #创建工作目录
[root@nginx-server ~]# docker pull daocloud.io/library/nginx

先运行一次容器(为了拷贝配置文件):
[root@nginx-server ~]# docker run -itd --name nginx-1 -p 80:80 daocloud.io/library/nginx
将容器内nginx的配置文件拷贝到宿主机上面
[root@nginx-server ~]# docker cp web-nginx:/etc/nginx /application/nginx/
[root@nginx-server ~]# cd /application/nginx/
[root@nginx-server nginx]# ll
total 0
drwxr-xr-x 2 root root 6 May 14 00:37 html
drwxr-xr-x 2 root root 6 May 14 00:37 logs
drwxr-xr-x 3 root root 177 Feb 9 2021 nginx
# 改名
[root@nginx-server nginx]# mv nginx/ conf
[root@nginx-server nginx]# ll
total 0
drwxr-xr-x 3 root root 177 Feb 9 2021 conf
drwxr-xr-x 2 root root 6 May 14 00:37 html
drwxr-xr-x 2 root root 6 May 14 00:37 logs
[root@nginx-server nginx]# cd conf/conf.d/
[root@nginx-server conf.d]# cp default.conf default.conf.bak
[root@nginx-server conf.d]# mv default.conf app.conf
# 配置负载均衡
[root@nginx-server conf.d]# cat upstream.conf
upstream java-web {
server 10.31.162.32:8080;
}
[root@nginx-server conf.d]# cat app.conf
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;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}

location /prod-api/{
proxy_pass http://java-web/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

停止并删除容器
[root@nginx-server ~]# docker stop web-nginx
[root@nginx-server ~]#docker rm web-nginx

创建启动脚本
[root@nginx-server ~]# mkdir /opt/script
[root@nginx-server ~]# cat /opt/script/updata-nginx.sh
nginx.sh
#!/usr/bin/bash
up_path=/root/upload/
code=*.tar.gz
src=/application/nginx/html
docker_name=web-nginx

docker login -uadmin -p'Harbor12345' 10.31.162.124
cd $up_path
tar xzf $code -C $src
cd $src && chmod 777 * -R
if [ $? -eq 0 ];then
docker run -itd --restart=always --name web-nginx -p 80:80 -v /application/nginx/html/:/usr/share/nginx/html -v /application/nginx/logs/:/var/log/nginx/ -v /application/nginx/conf:/etc/nginx 10.31.162.124/nginx/mynginx:v1.0
sleep 1
if [ $? -eq 0 ];then
echo "nginx is started"
else
echo "启动失败,请手动处理"
fi
else
echo "解压失败"
fi
chmod 777 $src/ -R

# 赋予权限
[root@nginx-server ~]# chmod +x /opt/script/updata-nginx.sh
配置连接harbor仓库地址
[root@nginx-server ~]# vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.209.166"]
}
[root@nginx-server ~]# systemctl restart docker

安装mysql与redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
10.31.162.39	mysql-redis-server
1.安装redis
[root@mysql-redis ~]# wget https://download.redis.io/releases/redis-7.0.9.tar.gz
[root@mysql-redis ~]# tar xzvf redis-7.0.9.tar.gz -C /usr/local/
[root@mysql-redis ~]# mv /usr/local/redis-7.0.9/ /usr/local/redis
[root@mysql-redis ~]# cd /usr/local/redis/
[root@mysql-redis redis]# yum install -y gcc make
[root@mysql-redis redis]# make
[root@mysql-redis redis]# vim redis.conf
bind 10.31.162.39  #只监听内网IP
daemonize yes     #开启后台模式将on改为yes
port 6379 #端口号
protected-mode no #将加密保护模式关闭

启动redis
[root@mysql-redis redis]# src/redis-server redis.conf &
[root@mysql-redis redis]# netstat -lntp | grep 6379
tcp 0 0 192.168.209.159:6379 0.0.0.0:* LISTEN 5770/src/redis-serv

2.安装mysql
[root@mysql-redis ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
[root@mysql-redis ~]# rpm -ivh mysql80-community-release-el7-7.noarch.rpm
[root@mysql-redis ~]# vim /etc/yum.repos.d/mysql-community.repo
将8.0关闭,将5.7开启
[root@mysql-redis ~]# yum install -y mysql-community-server
[root@mysql-redis ~]# systemctl start mysqld
[root@mysql-redis ~]# systemctl enable mysqld
[root@mysql-redis ~]# grep pass /var/log/mysqld.log
2023-05-09T12:37:58.805419Z 1 [Note] A temporary password is generated for root@localhost: :h,=.RRr28kt
[root@mysql-redis ~]# mysqladmin -uroot -p':h,=.RRr28kt' password 'QianFeng@123!'
[root@mysql-redis ~]# mysql -uroot -p'QianFeng@123!'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.31 MySQL Community Server (GPL)
...
创建数据库ry
mysql> create database ry character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

设置root允许远程登录
mysql> update mysql.user set host = '%' where user = 'root';
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> flush privileges;

mysql> \q
Bye

git-server获取代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
10.31.162.125	git-server
# 配置git
[root@git-server ~]# git config --global user.email "[email protected]"
[root@git-server ~]# git config --global user.name "soho"
#[root@git-server ~]# git clone https://gitee.com/y_project/RuoYi-Vue.git
[root@git-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/RuoYi-Vue-master.zip
[root@git-server ~]# mv RuoYi-Vue-master/ RuoYi-Vue
[root@git-server ~]# cd RuoYi-Vue/
[root@git-server RuoYi-Vue]# ls
bin pom.xml ruoyi-common ruoyi-quartz ry.bat
doc README.md ruoyi-framework ruoyi-system ry.sh
LICENSE ruoyi-admin ruoyi-generator ruoyi-ui sql

# 进行后端数据库与redis的配置
1.先配置连接redis服务
[root@git-server RuoYi-Vue]# cd ruoyi-admin/src/main/resources/
[root@git-server resources]# vim application.yml
# redis 配置
redis:
# 地址--MySQL的IP地址
host: 10.31.162.39
# 端口,默认为6379
port: 6379
# 密码
password:

2.修改mysql
[root@git-server resources]# vim application-druid.yml
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://10.31.162.39:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: QianFeng@123!

同时注意数据库连接这里是否启动加密连接,如果启用了加密连接有可能会造成代码与数据库连接不上。修改为:
&useSSL=false&

配置完成

#导入数据给创建的数据库里面
安装mysql客户端
[root@git-server ~]# yum install -y mysql
[root@git-server ~]# cd RuoYi-Vue/sql/
[root@git-server sql]# ls
quartz.sql ry_20230223.sql
[root@git-server sql]# mysql -uroot -p'Qianfeng@123' -h 10.31.162.39 -D ry < quartz.sql
[root@git-server sql]# mysql -uroot -p'Qianfeng@123' -h 10.31.162.39 -D ry < ry_20230223.sql

开始创建版本库
[root@git-server ~]# mkdir /git-server
[root@git-server ~]# useradd git
[root@git-server ~]# passwd git
[root@git-server ~]# cd /git-server/
[root@git-server git-server]# git init --bare ryvue
Initialized empty Git repository in /git-server/ryvue/
[root@git-server git-server]# git init --bare ryjava
Initialized empty Git repository in /git-server/ryjava/
[root@git-server git-server]# chown git.git /git-server/ -R

在本机将两个仓库克隆下来进行代码提交:
[root@git-server ~]# ssh-keygen
[root@git-server ~]# ssh-copy-id [email protected] 与自己的git用户配置免密
[root@git-server ~]# git clone [email protected]:/git-server/ryvue/
Cloning into 'ryvue'...
warning: You appear to have cloned an empty repository.
[root@git-server ~]# git clone [email protected]:/git-server/ryjava
Cloning into 'ryjava'...
warning: You appear to have cloned an empty repository.

将代码提交到相应的代码库中
注:在这里没有办法区分前端和后端打包时需要的依赖,顾将所有代码都拷贝到两个版本库中。
[root@git-server ~]# cd ryvue/
[root@git-server ryvue]# cp -r /root/RuoYi-Vue/ruoyi-ui/* .
[root@git-server ryvue]# cd ../ryjava/
[root@git-server ryjava]# cp -r /root/RuoYi-Vue/* .
[root@git-server ryjava]# git add -A
[root@git-server ryjava]# git commit -m "add 1"
[root@git-server ryjava]# git push origin master

在编写后端的Dockerfile
[root@git-server ryjava]# cat Dockerfile
FROM 10.31.162.124/myjdk/my-jdk:v1.0

WORKDIR /application/app

ADD ruoyi-admin/target/*.jar /application/app

EXPOSE 8080

ENTRYPOINT ["java","-jar","ruoyi-admin.jar"]

[root@git-server ryjava]# git add Dockerfile
[root@git-server ryjava]# git commit -m "docker 1"
[master 76f71f4] docker 1
1 file changed, 1 insertion(+), 1 deletion(-)
[root@git-server ryjava]# git push origin master
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 294 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To [email protected]:/git-server/ryjava/
2b539ad..76f71f4 master -> master

[root@git-server ryjava]# cd ../ryvue/
[root@git-server ryvue]# git add -A
[root@git-server ryvue]# git commit -m "add 2"
[root@git-server ryvue]# git push origin master

安装harbor仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
10.31.162.124	haobor-server
安装docker
[root@harbor ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@harbor ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@harbor ~]# yum install -y docker-ce
[root@harbor ~]# systemctl start docker && systemctl enable docker

[root@harbor ~]# wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz
[root@harbor ~]# yum -y install lrzsz

[root@harbor ~]# curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

[root@harbor ~]# chmod +x /usr/local/bin/docker-compose

[root@harbor ~]# tar xf harbor-offline-installer-v1.8.0.tgz

[root@harbor ~]# cd harbor

http访问方式的配置:
[root@harbor harbor]# vim harbor.yml #主机名要可以解析(需要部署dns服务器,用/etc/hosts文件没有用),如果不可以解析,可以使用IP地址,需要修改的内容如下
hostname: 10.31.162.124

[root@harbor harbor]# ./install.sh #需要等待下载镜像
[root@harbor-server harbor]# docker-compose up -d
浏览器访问测试:
http://10.31.162.124
用户名admin 密码:Harbor12345

[root@harbor harbor]# docker login -uadmin -p'Harbor12345' 10.31.162.124

创建项目仓库

docker-ruoyi1.webp

jenkins服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
10.31.162.35	jenkinx-server
1.安装jenkins 略
2.配置jenkins免密连接git、nginx、java服务器--略

安装git命令
[root@jenkins-server ~]# yum install git -y
安装java打包命令
安装maven打包命令--可以安装在java目录里
设置java、maven变量--/etc/profile
[root@jenkins-server ~]# source /etc/profile
# 查看版本,验证变量是否变量
[root@jenkins-server ~]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-

安装node.js前端打包工具命令npm
[root@jenkins-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/node-v14.15.3-linux-x64.tar.gz
[root@jenkins-server ~]# tar xf node-v14.15.3-linux-x64.tar.gz -C /usr/local/
[root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv node-v14.15.3-linux-x64/ node
[root@jenkins-server ~]# vim /etc/profile
NODE_HOME=/usr/local/node
PATH=$NODE_HOME/bin:$PATH
export NODE_HOME PATH
[root@jenkins-server ~]# source /etc/profile
[root@jenkins-server ~]# node -v
v12.18.4

安装docker
[root@jenkins-server ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 git
[root@jenkins-server ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@jenkins-server ~]# yum install -y docker-ce
启动并设置开机启动
[root@jenkins-server ~]# systemctl start docker && systemctl enable docker

配置jenkins连接harbor仓库
[root@jenkins-server ~]# vim /etc/docker/daemon.json
{
"insecure-registries": ["10.31.162.124"]
}
[root@jenkins-server ~]# systemctl restart docker
[root@jenkins-server ~]# docker login 10.31.162.124 -uadmin
Password: Harbor12345
Login Succeeded

创建带有java环境的基础镜像
[root@jenkins-server ~]# mkdir java
将对应版本的jdk包上传到该目录中
[root@jenkins-server java]# cat Dockerfile
FROM daocloud.io/library/centos:7
# 更新软件
RUN yum -y upgrade
# 安装中文包
RUN yum install -y kde-l10n-Chinese
# 重新安装glibc-common
RUN yum -y reinstall glibc-common
# 编译生成语言库
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
# 设置语言默认值为中文,时区改为东八区
RUN echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
# jdk1.8.0_321和自己下载的版本一致
ENV JAVA_HOME /usr/local/jdk1.8.0_321
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
# jdk-8u321-linux-x64.tar.gz和自己下载的版本一致
ADD jdk-8u321-linux-x64.tar.gz /usr/local/

构建镜像
[root@jenkins-server java]# docker build -t my-jdk:v1.0 .
[root@jenkins-server java]# docker images
[root@jenkins-server java]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-jdk v1.0 617a86a455e1 2 minutes ago


[root@jenkins-server java]# docker tag my-jdk:v1.0 10.31.162.124/myjdk/my-jdk:v1.0
将基础镜像上传到harbor仓库
[root@jenkins-server java]# docker push 10.31.162.124/myjdk/my-jdk:v1.0


制作nginx基础镜像
[root@jenkins-server nginx]# cat nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@jenkins-server nginx]# cat Dockerfile
FROM daocloud.io/library/centos:7
# 更新软件
RUN yum -y upgrade
# 安装中文包
RUN yum install -y kde-l10n-Chinese
# 重新安装glibc-common
RUN yum -y reinstall glibc-common
# 编译生成语言库
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
# 设置语言默认值为中文,时区改为东八区
RUN echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8

ADD nginx.repo /etc/yum.repos.d/
RUN yum install -y nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

[root@jenkins-server nginx]# docker build -t myningx:v1.0 .
[root@jenkins-server nginx]# docker tag myningx:v1.0 10.31.162.124/nginx/mynginx:v1.0
[root@jenkins-server nginx]# docker push 10.31.162.124/nginx/mynginx:v1.0

配置ssh连接前端服务器

配置前端服务器

访问10.31.162.35:8080/jenkins

docker-ruoyi1.webp

docker-ruoyi1.webp

创建后端构建任务

docker-ruoyi1.webp)

docker-ruoyi1.webp

docker-ruoyi1.webp

docker-ruoyi1.webp

docker-ruoyi1.webp

docker-ruoyi1.webp

1
2
3
4
5
脚本内容提供:
docker build -t java-server:v1.0 .
docker tag java-server:v1.0 10.31.162.124/java-server/java-server:v1.0
docker login -u admin -p Harbor12345 192.168.209.166
docker push 192.168.209.166/java-server/java-server:v1.0 && docker rmi 10.31.162.124/java-server/java-server:v1.0

docker-ruoyi1.webp

创建前端构建任务

docker-ruoyi1.webp

docker-ruoyi1.webp

docker-ruoyi1.webp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
前端脚本
#环境变量
echo $PATH
#进入jenkins workspace的项目目录
cd ${WORKSPACE}
#镜像选择淘宝的镜像
npm install --unsafe-perm --registry=https://registry.npm.taobao.org
#开始打包
npm run build:prod

#进入到打包目录
cd dist/
#删除上次打包生成的压缩文件
rm -rf *.tar.gz
#把生成的项目打包成压缩包方便传输到远程服务器
tar -zcvf `date +%F`.tar.gz *
#回到上层工作目录
cd ../

配置构建后操作

docker-ruoyi1.webp

docker-ruoyi1.webp

保存返回面板,开始构建

部署后端java服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
下载jocker
[root@java-server ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@java-server ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@java-server ~]# yum install -y docker-ce
[root@java-server ~]# systemctl start docker && systemctl enable docker

配置连接harbor仓库地址
[root@java-server ~]# vim /etc/docker/daemon.json
{
"insecure-registries": ["10.31.162.124"]
}
[root@java-server ~]# systemctl restart docker

登陆仓库
[root@java-server ~]# docker login -u admin -p Harbor12345 10.31.162.124
下载镜像
[root@java-server ~]# docker pull 10.31.162.124/java-server/java-server:v1.0
[root@java-server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.209.166/java-server/java-server v1.0 23d4017d23fc Less than a second ago 725MB

[root@java-server ~]# docker run -itd --name java-server --restart=always --net host 10.31.162.124/java-server/java-server:v1.0

查看nginx服务器端口有没有起来

1
[root@nginx-server ~]# ss -lnpt		#查看80端口有没有起来

登入web测试

访问 10.31.162.25会出来偌依的界面


docker-偌依 项目部署
http://example.com/2025/11/06/docker-偌依-项目部署/
作者
Mr.xu
发布于
2025年11月6日
许可协议