神泱 发表于 3 天前

docker镜像制作(Docker Desktop)

本篇记录全部流程


[*](第9次按文档流程重写,完成全部流程)
[*](第10次按文档流程重写,测试可行,整体完成)
第十次测试开始

https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318221928018-213163644.png
测试完成,整体流程走下来,快的半小时,慢两小时内可以完成

任务目标


[*]在Desktop Docker中安装一个Ubuntu镜像的docker。
[*]利用OneInStack工具安装Redis+MySql8.0+nginx。
[*]redis配置只能127.0.0.1本机访问。
[*]MySql需要设置表名大小写忽略。MySql配置自己姓名缩写的账号,设置密码,能远程访问,能使用Navicat/DataGrid之类的数据库访问工具进行远程连接。
[*]完成以上操作后,请把docker提交为新的镜像Ubuntu-new,并把镜像保存为硬盘上某个tar文件。(作为日后完整的初始态的项目服务器环境镜像文件)
[*]在docker中运行若依后端编译好的jar文件,分别运行于docker中的8080和8081两个端口。
[*]在nginx中配置若依前端,负载均衡方式访问若依后端,并在本机进行访问。
docker镜像制作-详细流程

1.下载Docker Destop

1.1 开启vpn

1.2下载Docker Desktop

网址:https://www.docker.com/products/docker-desktop/
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303143221995-2145082167.png
注意事项:


[*]安装位置默认为c盘
[*]修改安装位置需要使用cmd指定安装位置
[*]cmd命令:start /w "" "D:\windows\下载\Docker_Desktop_Installer.exe" install --installation-dir=D:\Docker --windows-containers-default-data-root=D:\DockerData
cmd命令参数说明

参数值说明--installation-dirD:\DockerDocker Desktop 程序本身的安装目录(默认在 C 盘)--windows-containers-default-data-rootD:\DockerDataWindows 容器的默认数据存储根目录(镜像、容器文件等)2.下载Ubuntu

2.1 打开Docker Desktop

https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303143633427-2095625987.png
2.2 修改镜像安装位置

https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303143755149-897058504.png
2.3 拉取Ubuntu

https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303144122047-1137123205.png
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303144155314-920977703.png
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260317113553916-1652659681.png
拉取成功TAG会打钩后,并且下方会出现ubuntu:lastest
3.配置Ubuntu

3.1 启动容器


[*]win+R
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303144921916-414886621.png
[*]输入cmd,打开命令行窗口
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303144947046-1491998193.png
[*]创建容器命令:docker run -itd --privileged -p 13306:3306 -p 8080:80 -p 22222:22 --name ubuntu-server ubuntu /bin/bash
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303145454096-907355586.png
cmd参数说明

https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303145200024-1816959818.png
参数作用--privileged提供管理员权限--name ubuntu-server将容器命名为ubuntu-server参数宿主机端口容器端口用途-p 13306:3306133063306MySQL 数据库服务-p 8080:80808080HTTP/Web 服务(Nginx)-p 22222:222222222SSH 远程登录3.2进入容器


[*]运行命令:docker exec -it ubuntu-server bash
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303145749937-636937080.png
或者图形界面进入
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303145933553-1088461691.png
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303150019360-1416772453.png
3.3安装vim、wget、ssh


[*]查看文件是否存在,并备份文件
查看命令: cat /etc/apt/sources.list
备份命令: cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
[*]替换为国内镜像源
替换命令:sed -i -e 's|http://archive.ubuntu.com/ubuntu|http://mirrors.aliyun.com/ubuntu|g' -e 's|http://security.ubuntu.com/ubuntu|http://mirrors.aliyun.com/ubuntu|g' /etc/apt/sources.list.d/ubuntu.sources


[*]执行结果
查看是否成功:cat /etc/apt/sources.list.d/ubuntu.sources
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260317230231283-1391191946.png

[*]更新软件包索引
命令: apt-get update
[*]安装vim(安装过程遇到Y/N全部选择y)
命令: apt-get install vim(vim 文本编辑器,比vi好用一些)
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303150518278-710568497.png
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303150633164-1162756961.png
此处选择5.Asia(亚洲)
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303150733111-1627465626.png
此处选择69.Shanghai(上海)
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303150823775-1996286654.png
[*]安装wget(安装过程遇到Y/N全部选择y)
命令: apt-get install wget (wegt 命令行下载工具)
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303151047211-1431052464.png
[*]安装ssh(安装过程遇到Y/N全部选择y)
命令: apt-get install ssh (ssh 用于远程连接)
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303151251918-1575736525.png
[*]重置密码(Docker容器默认没有密码)
命令: passwd root
[*]编辑SSH配置允许root登录
命令: vim /etc/ssh/sshd_config
[*]按 i 进入编辑模式
修改以下配置项:
PermitRootLogin yes         (允许root远程登录,在正式使用中存在安全隐患)
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303153251855-67325318.png
允许22端口与22222端口进行远程连接
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260317123620095-2026762779.png
[*]保存退出
按esc退出编辑模式,输入:wq保存退出
[*]重新启动ssh
命令: service ssh restart
[*]远程连接测试
命令: ssh -p 22222 root@127.0.0.1
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303153904362-1183903492.png
出现远程主机变更警告

https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260317124325564-776847064.png

[*]在Docker 容器重建,会出现此警告导致远程连接失败
删除 SSH 已知主机密钥命令: ssh-keygen -R :22222
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260317124434283-1088252459.png
测试连接


[*]使用ssh -p 22222 root@127.0.0.1,连接成功
原因 : 在创建容器时,设置了端口映射22222:22
容器内22222端口并未用到,要用到可以设置22222:22222
点击查看自动化安装步骤### (废弃,太慢了,服务器可能处于关闭状态)自动化安装(注意host is down,出现就洗洗睡,换个时间再来)OneStack一键安装:https://oneinstack.com/auto/**本次任务: Redis + MySql 8.0 + nginx**!(https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303155006788-1302957252.png)- 安装命令(第一次下载使用国外源,花了7小时左右,第8次切换源下载,预计3小时)`wget -c http://mirrors.oneinstack.com/oneinstack.tar.gz && tar xzf oneinstack.tar.gz && ./oneinstack/install.sh --db_option 1 --dbinstallmethod 1 --dbrootpwd 1234567890 --nodejs--redis `4.测试自动化安装内容

4.1 Redis运行


[*]查找 Redis 配置文件位置
命令: find / -name "redis.conf" 2>/dev/null
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303222505924-765780841.png
[*]使用配置文件启动Redis服务
命令: redis-server /usr/local/redis/etc/redis.conf
[*]进入Redis客户端
命令: redis-cli
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303222754601-1512221248.png
在 redis-cli 中执行以下命令:
ping 预期返回: PONG
set test_key "Hello Redis" 预期返回: OK
get test_key 预期返回: "Hello Redis"
del test_key 预期返回: (integer) 1
exit
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303223232972-1277578508.png
Redis运行正常
4.2 Mysql运行


[*]进入mysql
命令: mysql -u root -p
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303223721054-616525570.png
[*]检查 MySQL 是否安装
命令:which mysql
命令: find /usr/local -name "mysql" -type d 2>/dev/null
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303224403013-2049290615.png
[*]配置环境变量
命令: echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
命令: source /etc/profile
[*]安装依赖(中间省略部分流程,按照下面运行可能无法成功运行)
命令: apt-get install -y libaio1t64
[*]创建软链接
命令: ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
命令: ldconfig
[*]初始化数据库
命令: /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql
[*]启动 MySQL
命令: /usr/local/mysql/bin/mysqld_safe --user=mysql &
执行后,ctrl+c退出
[*]进入mysql
命令: mysql -u root -p
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303233905694-1185165403.png
[*]测试mysql
命令: SHOW DATABASES;
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303234021131-800853511.png
命令: SELECT VERSION();
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303234109048-897498569.png
[*]退出
命令: exit
4.3 Tomact运行


[*]启动Tomact
命令: /usr/local/tomcat/bin/catalina.sh start
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303234650476-48321584.png
[*]测试
命令: curl http://localhost:8080
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303234852539-1164150003.png
[*]停止Tomact
命令:/usr/local/tomcat/bin/catalina.sh stop
[*]编辑配置文件
命令: vi /usr/local/tomcat/conf/server.xml
4.4 Nginx运行


[*]启动nginx
命令: /usr/local/nginx/sbin/nginx-c /usr/local/nginx/conf/nginx.conf
[*]测试(需要先停止Tomact)
命令: curl http://localhost
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260304000241054-1349186389.png
5.docker重启后启动清单


[*]启动对应容器
[*]进入容器: docker exec -it ubuntu-server bash
[*]开启ssh服务: service ssh restart
[*]启动redis: redis-server /usr/local/redis/etc/redis.conf
[*]启动mysql: /usr/local/mysql/bin/mysqld_safe --user=mysql &
[*]启动Tomact: /usr/local/tomcat/bin/catalina.sh start
[*]启动nginx: /usr/local/nginx/sbin/nginx-c /usr/local/nginx/conf/nginx.conf
3.4 手动安装nginx + mysql80 + redis

mysql8.0安装


[*]安装mysql8.0
命令: apt install mysql-server-8.0
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318095854302-1081479688.png
[*]检查是否安装完成
命令: service mysql status
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318095819324-2146953172.png
[*]启动mysql
命令: service mysql start
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318095940220-248889998.png
下方的warning不影响mysql启动
[*]查看是否启动
命令: service mysql status
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318100319360-94988125.png
[*]进入mysql
命令: mysql -u root
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318100555301-1477955085.png
[*]设置密码
命令:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
[*]测试是否设置成功
命令: mysql -u root -p
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318101754235-451991447.png


[*]mysql8.0安装完成,功能正常
redis安装


[*]安装redis
命令: apt install -y redis-server
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318102335666-497904026.png
[*]查看是否安装成功
命令: redis-cli --version
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318102434851-897869010.png
[*]启动redis
命令: redis-server
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318102725076-230292650.png
后台运行命令: redis-server --daemonize yes
[*]测试redis客户端连接
命令: redis-cli ping
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318103120448-430906682.png
[*]设置密码
命令: sed -i 's/^# requirepass foobared/requirepass 密码/' /etc/redis/redis.conf
[*]重启redis加载配置
停止命令: redis-cli shutdown
启动命令: redis-server /etc/redis/redis.conf --daemonize yes
[*]测试密码是否设置成功
进入redis命令: redis-cli
测试命令: ping
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318104159082-2109942468.png
输入密码: AUTH 密码,密码正确返回OK
测试命令: ping
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318104328369-131605578.png


[*]redis安装完成,功能正常
安装nginx


[*]安装nginx
命令:apt install -y nginx
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318104632717-1926158526.png
[*]检查是否安装成功
命令: nginx -v
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318104733987-1119055574.png
[*]启动nginx
命令: service nginx start
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318104855027-1222366855.png
[*]安装curl
命令: apt install -y curl
[*]测试是否可以正常使用
命令: curl http://localhost
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318105307547-75821363.png


[*]nginx安装完成,功能正常
4.制作新的镜像文件并保存到本地


[*]制作新的镜像文件
命令:docker commit ubuntu-server ubuntu-new
未执行前
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303211933544-1402862015.png
执行后
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303212717207-867115632.png
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260303212727374-1487679815.png
[*]保存到本地
命令:docker save -o ubuntu-new.tar ubuntu-new
此命令会将ubuntu-new.tar默认保存到到当前的工作目录
指定保存位置的命令(地址: D:\ubuntu-new.tar):
docker save -o D:\ubuntu-new.tar ubuntu-new


[*]找不到文件
下载Everything搜索ubuntu-new.tar
注意: 不要去Microsoft Store下载,去官网这东西是免费的
[*]docker制作简单示例
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260304150820996-1821567021.png
任务完成情况


[*] 在Desktop Docker中安装一个Ubuntu镜像的docker。
[*] 利用OneInStack工具安装Redis+MySql8.0+nginx。
[*] redis配置只能127.0.0.1本机访问。
[*] MySql需要设置表名大小写忽略。MySql配置自己姓名缩写的账号,设置密码,能远程访问,能使用Navicat/DataGrid之类的数据库访问工具进行远程连接。
[*] 完成以上操作后,请把docker提交为新的镜像Ubuntu-new,并把镜像保存为硬盘上某个tar文件。(作为日后完整的初始态的项目服务器环境镜像文件)
[*] 在docker中运行若依后端编译好的jar文件,分别运行于docker中的8080和8081两个端口。
[*] 在nginx中配置若依前端,负载均衡方式访问若依后端,并在本机进行访问。
redis任务


[*]查看redis配置文件位置
命令: ls -l /etc/redis/redis.conf
[*]编辑redis配置文件
命令: vim /etc/redis/redis.conf
[*]添加只允许访问本机(redis默认配置即为只允许本机访问)
添加 bind 127.0.0.1 -::1(同时运行IPV6与IPV4的本机地址访问)
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318113458617-244625217.png


[*] redis配置只能127.0.0.1本机访问。
mysql任务

设置表名大小写忽略(注意: 此操作需要删除数据库所有数据,不要轻易执行)


[*]停止mysql服务
命令: service mysql stop
[*]删除删除旧数据目录并重建
命令1:rm -rf /var/lib/mysql
命令2:mkdir /var/lib/mysql
命令3:chown mysql:mysql /var/lib/mysql
[*]编辑配置文件
命令: vim /etc/mysql/mysql.conf.d/mysqld.cnf
添加: lower_case_table_names = 1
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318115754447-63079249.png
[*]初始化数据库
命令: /usr/sbin/mysqld --initialize --user=mysql --lower-case-table-names=1
[*]启动mysql
命令: service mysql start
[*]查看临时密码
命令: grep 'temporary password' /var/log/mysql/error.log
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318120127739-1868187117.png
[*]进入mysql
命令: mysql -u root -p
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318120308974-1946885318.png
[*]设置密码
命令: ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
[*]测试是否生效
创建数据库: CREATE DATABASE testdb;
使用数据库: use testdb;
创建表: CREATE TABLE TestTable (id INT);
再次创建表: CREATE TABLE testtable (id INT);
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318121213183-1261341913.png


[*] 设置表名大小写忽略
MySql配置账号,设置密码,能远程访问,能使用数据库访问工具进行远程连接。


[*]进入mysql
命令: mysql -u root -p
[*]创建一个账号('%' 表示允许从任何主机远程连接)
命令: CREATE USER '账号'@'%' IDENTIFIED BY '密码';
[*]授予创建的账号权限
命令: GRANT ALL PRIVILEGES ON *.* TO '账号'@'%';
*.*中的第一个 * 表示为 允许访问的数据库名 ,* 为所有数据库
*.*中的第一个 * 表示为 允许访问的表名 ,* 为所有当前数据库下的所有表明
my_db.table_1表示,允许访问my_db数据库的table_1表
[*]刷新权限,使权限生效
命令: FLUSH PRIVILEGES;
[*]退出mysql
命令: exit
[*]编辑配置文件,允许远程连接
命令; vim /etc/mysql/mysql.conf.d/mysqld.cnf
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318144535627-445672148.png
直接修改为0.0.0.0存在安全隐患(并不建议)
[*]重新加载配置
命令: service mysql reload
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318224529351-73859029.png
[*]查看mysql密码
命令: cat /etc/mysql/debian.cnf
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318224657800-1140409966.png
[*]进入mysql
命令: mysql -u root -p
[*]创建debian-sys-maint用户并设置系统配置密码
命令: CREATE USER 'debian-sys-maint'@'localhost' IDENTIFIED BY 'mysql密码';
[*]授予权限
命令: GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' WITH GRANT OPTION;
[*]刷新权限
命令: FLUSH PRIVILEGES;
[*]重启mysql,debian-sys-maint生效
命令: service mysql restart
[*]远程连接
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318154008726-1123319369.png


[*] 配置mysql账号并远程连接
将docker提交为新的镜像Ubuntu-new,并把镜像保存为硬盘上Ubuntu-new.tar文件


[*]将docker提交为新的镜像Ubuntu-new
cmd命令: docker commit ubuntu-server ubuntu-new
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318154555092-1544897359.png
[*]将镜像保存到硬盘上并命名为Ubuntu-new.tar
cmd命令: docker save -o ubuntu-new.tar ubuntu-new
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318154840355-81815665.png
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318154808695-1678913905.png


[*] 将docker提交为新镜像并保存到本地
在docker中运行jar文件,分别运行于8080和8081两个端口。


[*]使用winSCP工具连接docker
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318155437787-479371295.png
[*]将jar包、sql文件、dist文件放入到docker的root/ruoyi/下
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318171230449-168345875.png
[*]导入sql文件
进入数据库 : mysql -u root -p
创建数据库 : CREATE DATABASE IF NOT EXISTS mes_system CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
使用数据库 : use mes_system
导入sql脚本 : source /root/ruoyi/mes_system2.sql
[*]进入ruoyi文件夹
命令: cd /root/ruoyi/
[*]创建application.yml并写入配置
命令: vi application.yml
application.yml配置spring:datasource:    type: com.alibaba.druid.pool.DruidDataSource    driverClassName: com.mysql.cj.jdbc.Driver    druid:      master:      url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true      username: 用户名      password: 密码      slave:      enabled: false      url:      username:      password:      initialSize: 5      minIdle: 10      maxActive: 20      maxWait: 60000      timeBetweenEvictionRunsMillis: 60000      minEvictableIdleTimeMillis: 300000      maxEvictableIdleTimeMillis: 900000      validationQuery: SELECT 1      testWhileIdle: true      testOnBorrow: false      testOnReturn: false      webStatFilter:      enabled: true      statViewServlet:      enabled: true      allow:      url-pattern: /druid/*      login-username: ruoyi      login-password: 123456      filter:      stat:          enabled: true          log-slow-sql: true          slow-sql-millis: 1000          merge-sql: true      wall:          config:            multi-statement-allow: trueredis:    # 主机地址(本地填 localhost 或 127.0.0.1,远程填服务器IP)    host: 127.0.0.1    # 端口(默认6379)    port: 6379    # 密码    password: Redis密码    # 数据库索引(默认0)    database: 0    # 连接超时时间(毫秒)    timeout: 10s    # 连接池配置    lettuce:      pool:      # 最小空闲连接      min-idle: 0      # 最大空闲连接      max-idle: 8      # 最大活跃连接      max-active: 8      # 最大等待时间(负数表示无限制)      max-wait: -1ms
[*]安装JAVA17
命令: apt install -y openjdk-17-jdk
[*]运行jar包与8081与8080接口(cmd的窗口不要关,关了进程也会停止)
8080端口命令: java -jar /root/ruoyi/ruoyi-admin.jar --spring.config.additional-location=/root/ruoyi/application.yml --server.port=8080 &
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318160457069-662790119.png
8081端口命令: java -jar /root/ruoyi/ruoyi-admin.jar --spring.config.additional-location=/root/ruoyi/application.yml --server.port=8081 &
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318181834809-412056038.png
5.查看ruoyi-admin运行端口
命令: ps aux | grep ruoyi-admin
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318182128100-201369012.png


[*] 完成在docker中运行jar文件,分别运行于8080和8081两个端口
在nginx中配置若依前端,负载均衡方式访问若依后端,并在本机进行访问。


[*]将root/ruoyi/dist文件放入/var/www/html
命令:cp -r /root/ruoyi/dist /var/www/html
[*]修改nginx配置
命令: vim /etc/nginx/sites-available/default
进入后删除所有内容,自己手动配置,简洁
[*]配置负载均衡(这个需要放在server外部)
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318212522398-238130754.png
负载均衡代码# 负载均衡upstream OrdinaryPolling {       # 负载均衡策略:ip_hash 保证同一个用户请求落在同一台服务器上       # ip_hash;       # 权重配置:8080权重1,8081权重1    server 127.0.0.1:8080 weight=1;        server 127.0.0.1:8081 weight=1;}
[*]前端配置编写
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318213154997-1473195050.png
前端配置代码server {        listen 80 default_server;                        # IPv4:监听80端口,设为默认服务器        listen [::]:80 default_server;                        # IPv6:监听80端口,设为默认服务器        root /var/www/html/dist;                        # 前端文件根目录        index index.html index.htm;                        # 检索顺序        # 前端请求        server_name localhost;        location / {                # try_files 解决前端路由404问题,并返回静态页面                    try_files $uri $uri/ /index.html;        }}
[*]后端配置编写
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318213221289-1772544306.png
proxy_pass http://OrdinaryPolling/ 后面的/一定要带上,不然会导致404
后端配置代码        # 后端API请求        location /prod-api/ {                    proxy_set_header Host $http_host;                    proxy_set_header X-Real-IP $remote_addr;                    proxy_set_header REMOTE-HOST $remote_addr;                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                # 将请求转发给上面定义的 upstream 池                proxy_pass http://OrdinaryPolling/;        }
[*]检测nginx配置是否正常
命令: nginx -t
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318204457119-31342051.png
[*]重新加载nginx配置
命令: nginx -s reload
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318204614663-1385874000.png
[*]主机访问localhost:8080
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318210431167-484378787.png
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318210446563-240678062.png
[*]添加日志打印
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318215604137-1611067051.png
日志打印代码# ========== 定义日志格式,显示后端端口 ==========log_formatloadbalancing'$remote_addr -$remote_user [$time_local] "$request" '                           'status=$status body_bytes_sent=$body_bytes_sent '                           'upstream_addr=$upstream_addr upstream_status=$upstream_status';# ========== 使用自定义日志格式 ==========            access_log/var/log/nginx/access.logloadbalancing;
[*]测试负载均衡是否实现
命令1: nginx -t
命令2: nginx -s reload
命令3: for i in {1..20}; do curl -s http://localhost/prod-api/captchaImage > /dev/null && echo "请求 $i 完成"; done
命令4: tail -n 30 /var/log/nginx/access.log
命令5: > /var/log/nginx/access.log
https://img2024.cnblogs.com/blog/3709680/202603/3709680-20260318220456847-1567747909.png
设置的比例为1:1,但是实际并没有,但是负载均衡已经实现


[*] 在nginx中配置若依前端,负载均衡方式访问若依后端,并在本机进行访问
任务完成


[*] 在Desktop Docker中安装一个Ubuntu镜像的docker。
[*] 利用OneInStack工具安装Redis+MySql8.0+nginx。
[*] redis配置只能127.0.0.1本机访问。
[*] MySql需要设置表名大小写忽略。MySql配置自己姓名缩写的账号,设置密码,能远程访问,能使用Navicat/DataGrid之类的数据库访问工具进行远程连接。
[*] 完成以上操作后,请把docker提交为新的镜像Ubuntu-new,并把镜像保存为硬盘上某个tar文件。(作为日后完整的初始态的项目服务器环境镜像文件)
[*] 在docker中运行若依后端编译好的jar文件,分别运行于docker中的8080和8081两个端口。
[*] 在nginx中配置若依前端,负载均衡方式访问若依后端,并在本机进行访问。
容器重新启动后需要执行


[*]启动ssh:   service ssh start
[*]启动redis(后台运行) : redis-server /etc/redis/redis.conf &
[*]启动mysql : service mysql start
[*]启动nginx : nginx
[*]启动jar包(后台运行) : nohup java -jar /root/ruoyi/ruoyi-admin.jar --spring.config.additional-location=/root/ruoyi/application.yml --server.port=8080 > /root/ruoyi/log8080.log 2>&1 &

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: docker镜像制作(Docker Desktop)