docker-compose 编排ruoy实践

一、安装docker+华为加速器

bash 复制代码
1.关闭防火墙以及增强功能
systemctl stop firewalld
setenforce 0

2.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

3.设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.下载docker20.10.18版本
yum install -y docker-ce-20.10.18 docker-ce-cli-20.10.18 container.io

5.华为加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}
EOF

systemctl daemon-reload
systemctl resatrt docker

二、git clone RuoYi代码

bash 复制代码
mkdir /opt/ruoyi
cd /opt/ruoyi
git clone https://gitee.com/y_project/RuoYi-Vue.git

三、修改ruoyi配置文件

bash 复制代码
vim /opt/ruoyi/RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml

vim /opt/ruoyi/RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml

四、拉取node镜像,准备前端容器环境

bash 复制代码
docker pull node:12
cd /opt/ruoyi/RuoYi-Vue
docker run -it --rm -v /opt/ruoyi/RuoYi-Vue/ruoyi-ui:/opt/ node:12 /bin/bash
容器中:
cd /opt
#打包前端代码
npm install
#构建生产环境
npm run build:prod

此时,会再在/opt/ruoyi/RuoYi-Vue/ruoyi-ui目录下会生成一个dist目录(前端使用的文件,之后可以用于nginx)

五、拉取maven镜像

bash 复制代码
docker pull maven:3.6.3-openjdk-11

docker run -it --rm -v /opt/ruoyi//RuoYi-Vue:/vue maven:3.6.3-openjdk-11 /bin/bash
#进入容器
cd /vue
mvn -DskipTests -B clean package
exit

cd /opt/ruoti/RuoYi-Vue
mv ruoyi-admin/target/ruoyi-admin.jar /opt/ruoyi

六、使用dockerfile定义后端java项目的运行环境

bash 复制代码
mkdir /opt/java
cd /opt/java (把CentOS-Base放在此目录)
vim Dockerfile
FROM centos:7
RUN rm -rf /etc/yum.d/*
COPY epel-aliyun.repo /etc/yum.repos.d
COPY CentOS-aliyun-lhr.repo /etc/yum.repos.d
RUN yum clean all && yum makecache
run yum -y install java-1.8.0
WORKDIR /opt
COPY ./ruoyi-admin.jar /opt
CMD [ "java","-jar","ruoyi-admin.jar" ]

curl -o /opt/java/epel-aliyun.repo  https://mirrors.aliyun.com/repo/epel-7.repo 
curl -o /opt/java/CentOS-aliyun-lhr.repo  https://mirrors.aliyun.com/repo/Centos-7.repo

七、编写docker-compos.yml文件构建ruoyi项目

bash 复制代码
vim /opt/java/nginx.conf

  1 user nginx;
  2 worker_processes auto;
  3 error_log /var/log/nginx/error.log;
  4 pid /run/nginx.pid;
  5 # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
  6 include /usr/share/nginx/modules/*.conf;
  7 events {
  8     worker_connections 1024;
  9 }
 10 http {
 11     log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 12                 '$status $body_bytes_sent "$http_referer" '
 13                 '"$http_user_agent" "$http_x_forwarded_for"';
 14     access_log /var/log/nginx/access.log main;
 15     sendfile on;
 16     tcp_nopush on;
 17     tcp_nodelay on;
 18     keepalive_timeout 65;
 19     types_hash_max_size 4096;
 20     include /etc/nginx/mime.types;
 21     default_type application/octet-stream;
 22     # Load modular configuration files from the /etc/nginx/conf.d directory.
 23     # See http://nginx.org/en/docs/ngx_core_module.html#include
 24     # for more information.
 25     #include /etc/nginx/conf.d/*.conf;
 26     server {
 27         listen 80;
 28         server_name localhost;
 29         location / {
 30             root /usr/share/nginx/html;
 31             index index.html;
 32         }
 33         location /prod-api/ {
 34             proxy_pass http://java.com:8080/;
 35         }
 36     }
 37 # Settings for a TLS enabled server.
 38 #
 39 # server {
 40 # listen 443 ssl http2;
 41 # listen [::]:443 ssl http2;
 42 # server_name _;
 43 # root /usr/share/nginx/html;
 44 #
 45 # ssl_certificate "/etc/pki/nginx/server.crt";
 46 # ssl_certificate_key "/etc/pki/nginx/private/server.key";
 47 # ssl_session_cache shared:SSL:1m;
 48 # ssl_session_timeout 10m;
 49 # ssl_ciphers HIGH:!aNULL:!MD5;
 50 # ssl_prefer_server_ciphers on;
 51 #
 52 # # Load configuration files for the default server block.
 53 # include /etc/nginx/default.d/*.conf;
 54 #
 55 # error_page 404 /404.html;
 56 # location = /40x.html {
 57 # }
 58 #
 59 # error_page 500 502 503 504 /50x.html;
 60 # location = /50x.html {
 61 # }
 62 # }
 63 }

**/opt/ruoyi目录下写docker-compose.yml****文件**

bash 复制代码
vim docker-compose.yml

version: '3'

services:
  ruoyi-web:
    image: nginx:1.25.3
    container_name: ruoyi-web
    hostname: ruoyi-web
    environment:
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8
    ports:
      - 8888:80
    volumes:
      - /opt/ruoyi/RuoYi-Vue/ruoyi-ui/dist/:/usr/share/nginx/html/
      - /opt/ruoyi/java/nginx.conf:/etc/nginx/nginx.conf:ro
    links:
      - java:java.com
    depends_on:
      - java
  java:
    build: ./java
    container_name: java.server
    hostname: java
    environment:
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8
    links:
      - db:mysql.server
      - redis:redis.server
    depends_on:
      - db
      - redis
  db:
    image: mysql:5.7
    container_name: mysql.server
    hostname: db
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=ry-vue
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
    volumes:
      - /opt/mysql-data4:/var/lib/mysql
      - /opt/ruoyi/RuoYi-Vue/sql:/docker-entrypoint-initdb.d
  redis:
    image: redis
    container_name: redis.server
    hostname: redis:redis.server
    environment:
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8

先拖docker-compose-v2.24.3包到ruoyi目录下

mv docker-compose-v2.24.3 docker-compose

mv docker-compose /usr/local/bin

chmod +x /usr/local/bin/docker-compose

使用docker-compose启动ruoyi项目

bash 复制代码
docker-compose up

如果有错(比如ruoyi-java有错):
docker images
docker rmi -f ruoyi-java:latest
在java目录下  
cp /etc/yum.repos.d/CentOS-Base.repo ./ 
vim Dockerfile
把里边源改成CentOS-Base.repo
docker-compose down

docker-compose up

docker ps

登录:
192.168.10.162:8888

查看页面

相关推荐
H²D2 小时前
离线安装Dpanel面板
docker
Secede.3 小时前
Windows + WSL2 + Docker + CudaToolkit:深度学习环境配置
windows·深度学习·docker
iconball4 小时前
个人用云计算学习笔记 --37 Zabbix
运维·笔记·学习·云计算·zabbix
Tassel_YUE4 小时前
OLT设备介绍
运维·华为
I · T · LUCKYBOOM5 小时前
1.Apache网站优化
linux·运维·服务器·网络·apache
深耕AI5 小时前
【Docker命令】以LocalAI部署为例
运维·docker·容器
JANGHIGH5 小时前
vmware安装ubuntu虚拟机后与主机win10共享文件夹
linux·运维·ubuntu
GHL2842710905 小时前
vmware中无法看到共享文件夹
linux·运维·服务器
四谎真好看5 小时前
MySQL 学习笔记(运维篇1)
运维·数据库·笔记·学习·mysql·学习笔记