1.安装 docker
a.卸载旧版本
yum remove docker \
docker-client \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
b.在线安装
yum install -y yum-utils
c.设置镜像仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
d.更新 yum 软件包索引
yum makecache fast
e.安装 docker 相关内容
yum install docker-ce docker-ce-cli containerd.io
f.启动 docker
systemctl start docker
--restart=always 用于指定容器退出时是否自动重启
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字
curl localhost:3344 测试本地服务器是否正常工作
2.docker 安装 nginx
docker pull nginx
创建目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/html
mkdir -p /home/nginx/logs
启动 nginx
docker run --restart=always -d -p 3344:80 --name nginx nginx
再将容器内相应文件拷贝到宿主机上 f80bacd84584 为容器id
docker cp f80bacd84584:/etc/nginx/. /home/nginx/conf
docker cp f80bacd84584:/usr/share/nginx/html/. /home/nginx/html
docker cp f80bacd84584:/var/log/nginx/. /home/nginx/logs
再将该容器停止并删除
docker stop f80bacd84584
docker rm f80bacd84584
最后重新启动并挂载
docker run --restart=always -d -p 3344:80 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/logs:/var/log/nginx --name nginx nginx
curl localhost:3344
如果在阿里云上部署要开放端口
3.docker 安装 elasticsearch
启动 elasticsearch
docker run --restart=always -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" --name elasticsearch elasticsearch
curl localhost:9200
docker stats
如果在阿里云上部署要开放端口
4.docker 安装 portainer
启动 portainer
docker run --restart=always -d -p 8088:9000 -v /var/run/docker.sock:/var/run/docker.sock --privileged=true --name portainer portainer/portainer
5.docker 安装 mysql
docker pull mysql:5.7
启动 mysql
docker run --restart=always -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai --name mysql mysql:5.7
6.docker 安装 redis
docker pull redis
在 /home/redis/redis.conf 目录下配置 redis.conf
启动 redis
docker run --restart=always -d -p 6379:6379 -v /home/redis/redis.conf:/usr/local/etc/redis/redis.conf --name redis redis
7.docker 安装 nacos
docker pull nacos/nacos-server
创建目录
mkdir -p /home/nacos/logs
mkdir -p /home/nacos/conf
先启动 docker 生成 conf 下和 logs 下的文件
docker run --restart=always -d -p 8848:8848 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone --name nacos nacos/nacos-server
再将容器内相应文件拷贝到宿主机上 a73e87966eda 为容器id
docker cp a73e87966eda:/home/nacos/conf/. /home/nacos/conf
docker cp a73e87966eda:/home/nacos/logs/. /home/nacos/logs
再将该容器停止并删除
docker stop a73e87966eda
docker rm a73e87966eda
将 application.properties 里面的数据库修改为服务器地址
最后重新启动并挂载
docker run --restart=always -d -p 8848:8848 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /home/nacos/logs/:/home/nacos/logs -v /home/nacos/conf/:/home/nacos/conf/ --name nacos nacos/nacos-server
查看挂载的文件路径是否正确
docker inspect --format="{{json .Mounts}}" nacos
进入容器内查看
docker exec -it nacos /bin/bash
退出容器
exit
8.安装jdk
查看当前环境是否有
java -version
如果有先卸载
rpm -qa|grep jdk
rpm -e --nodeps 查出来的jdk信息
安装方式:rpm 安装
安装文件放在 /home/jdk11/jdk-11.0.21_linux-x64_bin.rpm
rpm -ivh jdk-11.0.21_linux-x64_bin.rpm
安装完成后进入/usr目录查找java文件夹
/usr/java/jdk-11
配置环境变量
vim /etc/profile
添加如下内容
export JAVA_HOME=/usr/java/jdk-11
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}
保存退出,让这个文件生效
source /etc/profile
安装 docker-compose
云真机平台:前后端部署 | Sonic - 开源云真机平台
1.下载
curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.设置权限
chmod +x /usr/local/bin/docker-compose
3.放到系统目录
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4.查看版本
docker-compose version
执行 docker-compose
[root@sanyiSonic sonic]# ls -a
. .. docker-compose.yml docker-compose-zh.yml .env nohup.out
[root@sanyiSonic sonic]# docker-compose up -d
部署若依项目
前端:
修改 nginx.conf 文件,新增 server 配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 192.168.2.120;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html; # 此处是解决刷新报404问题,但是登陆后会有一个404页面,需要点击返回主页,退出登录后再重新登录就消失了,还是解决的不完美
}
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;
rewrite ^/prod-api/(.*)$ /$1 break;
proxy_pass http://192.168.2.120:8080;
}
}
include /etc/nginx/conf.d/*.conf;
}
重启 nginx 服务
docker restart nginx
构建若依前端,打包生成 dist 文件夹,如果在生成中报如下错误,参考一下解决办法
如果启动报错 ERROR Error: error:0308010C:digital envelope routines::unsupported
是因为node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制
解决方法:1.降低 node 的版本
2.执行命令 $env:NODE_OPTIONS="--openssl-legacy-provider"
参考:https://blog.csdn.net/m0_65933139/article/details/130690790
将文件夹,放在该目录下
后端 :
创建 Dockerfile 生成若依后台镜像
vim Dockerfile
里面写
FROM amazoncorretto:11
RUN mkdir -p /ruoyi-admin
WORKDIR /ruoyi-admin
ENV JAR_FILE=ruoyi-admin.jar
COPY ${JAR_FILE} ${JAR_FILE}
EXPOSE 8080
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom"
CMD java -jar $JAR_FILE $JAVA_OPTS
保存退出
在当前文件夹内执行命令,Dockerfile 和 ruoyi-admin.jar 要在同一个文件夹内
docker build -t ruoyi-admin .
1.运行 ruoyi-admin 镜像
docker run: 运行一个容器
--restart=always: 设置容器总是自动重启
-d: 在后台模式下运行容器
-p 8080:8080: 将容器的 8080 端口映射到宿主机的 8080 端口
-v /etc/localtime:/etc/localtime: 将宿主机的时间设置挂载到容器内的 /etc/localtime 文件,用于同步容器的时间
-v $PWD:/ruoyi: 将当前目录挂载到容器内的 /ruoyi 目录
-v /home/ruoyi/logs:/home/ruoyi/logs: 将容器内当前目录下的日志同步到宿主机目录下
--name=ruoyi-admin: 指定容器的名称为 ruoyi-admin
--network bridge: 将容器连接到名为 bridge 的网络
ruoyi-admin: 要运行的镜像名称
docker run --restart=always -d -p 8080:8080 -v /etc/localtime:/etc/localtime -v $PWD:/ruoyi -v /home/ruoyi/logs:/home/ruoyi/logs --network bridge --name ruoyi-admin ruoyi-admin