Docker项目部署(Ubuntu系统部署ruoyi项目)

安装配置Docker

运行以下命令来卸载所有冲突的包:

for pkg in docker.io \
docker-doc \
docker-compose \
docker-compose-v2 \
podman-docker \
containerd runc; do sudo apt-get remove $pkg; done

更新软件包:

sudo apt-get update

安装必要的依赖包,这些包用于通过 HTTPS 获取软件仓库:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
  • 添加docker密钥和阿里apt源
复制代码
# 添加docker密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
复制代码
# 添加阿里云docker软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  • 更新源

    sudo apt update && apt-get update

  • 安装docker-CE

安装 Docker 及其依赖包,默认安装的是最新版本的稳定版。

sudo apt install -y docker-ce docker-ce-cli containerd.io

创建目录

sudo mkdir -p /etc/docker

配置镜像加速器

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
        "https://dockerpull.com",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.awsl9527.cn"
    ]
}
EOF

重载服务

sudo systemctl daemon-reload

重启服务

sudo systemctl restart docker

ry-vue docker部署

创建网络

复制代码
# 搭建net-ry局域网,用于部署若依项目
docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1
复制代码
​
# 注意1:关闭宿主机的防火墙,否者容器内部的MySQL、redis等服务,外部访问不了;开放端口3306、6379端口也没用。
打开防火墙
ufw enable

systemctl status firewalld
复制代码
​
# 注意2:关闭防火墙后必须重启docker,否者出现如下错误
docker: Error response from daemon: driver failed programming external connectivity on endpoint ruoyi-admin (399a34630e6ef8e4ed7cf20d46b9654c8d535d0fe44ceadebf8bd605d3da35b8):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.68.0.4:8080 ! -i br-c34635070c6f: iptables: No chain/target/match by that name.
​
参考链接:https://blog.csdn.net/xiegongmiao/article/details/128409967
systemctl restart docker

redis

安装

复制代码
#创建目录
mkdir -p /data/redis/{conf,data}
复制代码
#上传redis.conf文件到/data/redis/conf文件夹中
# bind 0.0.0.0 充许任何主机访问
# daemonize no 
# requirepass sasa
docker run -itd --name zking-redis -p 6379:6379 \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
--restart=always \
redis \
redis-server /etc/redis/redis.conf
  1. 允许redis外地连接
复制代码
#bind 127.0.0.1改成为
bind 0.0.0.0
  1. 开启redis验证(可选)

    requirepass sasa

  2. 开启redis数据持久化(可选)

    appendonly yes

测试

mysql

安装

复制代码
# 1.创建文件夹
mkdir -p /data/mysql/{conf,data}
复制代码
# 2.上传my.cnf文件到/data/mysql/conf文件夹中 (可以将my2.cnf修改好在Linux中重命名为my.cnf)
mv my2.cnf my.cnf
复制代码
# 3.启动MySQL容器服务
docker run -d --name zking-mysql \
-v /data/mysql/conf/my.cnf:/etc/my.cnf \
-v /data/mysql/data:/var/lib/mysql --restart=always \
-e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \
mysql/mysql-server:5.7
  1. 修改官方my.cnf

    复制代码
     #运行mysql5.7,注意有单独的mysql镜像
     docker run --name=mysql1 -d mysql/mysql-server:5.7
    
    复制代码
     #进入容器查看/etc/my.cnf文件,修改my.cnf文件,让其支持中文
  2. 查看mysql数据保存位置

    复制代码
    cd /var/lib/mysql
  3. 设置密码

    复制代码
    -e MYSQL_ROOT_PASSWORD=sasa:设置root的密码

充许远程连接

复制代码
# 进入容器
docker exec -it zking-mysql /bin/bash
复制代码
# 登录
mysql -u root -p;
复制代码
# 创建用户及授权
grant all privileges on *.* to root@'%' identified by 'sasa' with grant option;
复制代码
# 刷新权限
flush privileges; 

创建数据库

  1. 使用客户端工具初始化数据库

  2. 使用命令初始化数据库

复制代码
#登录到控制台
mysql -u root -p
复制代码
#执行sql
source sql文件全路径

ruoyi-admin服务

测试

docker network  inspect bridge

使用mvn或idea打包

  • 修改application-druid.yml配置了mysql

    • url: jdbc:mysql://zking-mysql:3306/ry

      • zking-mysql是容器名
  • 修改application.yml

    复制代码
    redis:
        # 地址
        host: zking-redis #是容器名
        # 端口,默认为6379
        port: 6379
        # 数据库索引
        database: 0
        # 密码
        password: 
  • 修改logback.xml日志文件位置,application.xml文件上传位置

  • 选择ruoyi中的package打包

使用Dockerfile自定义镜像

复制代码
# 1.构建Dockerfile镜像
1)切换到家目录
cd ~
mkdir ruoyi-admin
cd ruoyi-admin
复制代码
​
2)编写Dockerfile文件内容
vim Dockerfile_ruoyi-admin
复制代码
FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER "donkee@vip.qq.com"
ADD ruoyi-admin.jar /opt/app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/opt/app.jar"]
复制代码
​
3)上传ruoyi-admin.jar到Dockerfile_ruoyi-admin文件所在目录
4)ruoyi-admin为镜像名称,开始制作镜像
mv Dockerfile_ruoyi-admin Dockerfile
docker build -t ruoyi-admin .
  • 运行容器

    docker run -itd --name ruoyi-admin -p 8080:8080 ruoyi-admin

nginx

复制代码
# 1.创建目录
mkdir -p /data/nginx/{conf,html}
复制代码
# 2.上传nginx.conf至/data/nginx/conf文件夹中
复制代码
# 3.运行启动容器
docker run -itd --name zking-nginx -p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/html:/usr/share/nginx/html \
--restart=always \
nginx
  1. 找到配置文件及项目发布位置

    复制代码
    #启动容器
    docker run -itd --name n1 nginx
    #进入容器
    docker exec -it n1 bash
    #查看
    whereis nginx
    • 配置文件位置: /etc/nginx

    • 前端项目发部位置: /usr/share/nginx/html

配置域名 www.zking.com

相关推荐
运维&陈同学3 分钟前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
是阿建吖!4 分钟前
【Linux】进程状态
linux·运维
明明跟你说过32 分钟前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
O&REO40 分钟前
单机部署kubernetes环境下Overleaf-基于MicroK8s的Overleaf应用部署指南
云原生·容器·kubernetes
运维小文2 小时前
K8S资源限制之LimitRange
云原生·容器·kubernetes·k8s资源限制
登云时刻2 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(二)
redis·容器·kubernetes
Mr_Xuhhh2 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
朝九晚五ฺ9 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
Kkooe10 小时前
GitLab|数据迁移
运维·服务器·git
wuxingge10 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes