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

查看页面

相关推荐
乘云数字DATABUFF4 小时前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Patrick_Wilson18 小时前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy1 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭1 天前
运行你的第一个Docker容器
后端·docker·容器
荣--2 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森2 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
宋均浩2 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
Avan_菜菜3 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵3 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1113 天前
LM Studio Docker 部署——本地大模型一键启动
docker