代码克隆 git clone https://gitee.com/y_project/RuoYi-Vue.git

系统需求

JDK >=1.8
MySQL >=5.7
Maven >=3.0
Node >=12
Redis >=3

创建ruoyi目录,以及子目录Java

克隆代码到ruoyi目录

node:

拉取node镜像

docker pull node:12.18.4

构建并打包

[root@docker ~]# cd ruoyi/
[root@docker ruoyi]# docker run -it --rm -v ./RuoYi-Vue/ruoyi-ui/:/opt node:12.18.4 /bin/bash

root@88fdc07a5500:/# cd /opt/
root@88fdc07a5500:/opt# npm install

打包完成

build下(打包出来的目录为dist)

npm run build:prod

打包完成后可以退出了,dist目录已经映射到宿主机        上


maven:

拉取maven镜像

docker pull maven:3.6.3-openjdk-11

修改数据库密码

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

修改redis内容

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

构建并打包(打包完成会有一个target目录)

docker run -it --rm -v /root/ruoyi/RuoYi-Vue/:/vue maven:3.6.3-openjdk-11 /bin/bash

cd /vue
mvn package

打包完成后可以退出了,target目录已经映射到宿主机

创建java目录,将target目录里的ruoyi-admin.jar拷贝到Java目录里

cp RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar ./java/

在java目录里创建Dockerfile

Dockerfile:

拉取nginx、mysql以及redis镜像

Dockerfile代码

FROM centos:7
RUN yum -y install java-11-openjdk
WORKDIR /opt
COPY . /opt/
CMD [ "java","-jar","ruoyi-admin.jar" ]

构建镜像

docker build -t ruoyi-java:v1 .

创建docker-compose.yml

docker-compose.yml:

找一个nginx.conf文件,放在ruoyi目录下

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    #include /etc/nginx/conf.d/*.conf;

    server {
        listen 80;
        server_name localhost;
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
         location /prod-api/ {
             proxy_pass http://java.com:8080/;
         }
    }
# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

注意修改的地方,或者直接拷贝。红框里的include要注释掉,要不然会访问不到页面

docker-compose.yml代码

version: '3'
services:
  ruoyi-web:
    image: nginx:1.16.1
    container_name: ruoyi-web
    hostname: ruoyi-web
    ports:
      - 80:80
    volumes:
      - ./RuoYi-Vue/ruoyi-ui/dist/:/usr/share/nginx/html/
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - /etc/localtime:/etc/localtime
    links:
      - java:java.com
    depends_on:
      - java
  java:
    # image: ruoyi-java:v1
    build: ./java
    container_name: ruoyi-java
    hostname: ruoyi-java
    volumes:
      - /etc/localtime:/etc/localtime
    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
    command: 
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
    volumes:
      - /opt/mysql-data:/var/lib/mysql
      - ./RuoYi-Vue/sql:/docker-entrypoint-initdb.d
      - /etc/localtime:/etc/localtime
  redis:
    image: redis
    container_name: redis.server
    hostname: redis.server
    volumes:
      - /etc/localtime:/etc/localtime

启动

docker compose up

可能会遇到的问题:

如果报以下错误,且数据库连接没问题

后端打包有可能会很慢或者打包不成功,可能是跟maven去官网仓库找不到jar有关,解决方法是maven换国内阿里云的仓库

解决方案:

先将上个程序down掉,放在后台去启动(加个-d)

只要四个进程都在就ok了

解决乱码问题:

environment:
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8

在docker-compose.yml增加上边的代码(注意格式)

然后再将/opt/目录下的mysql-data删掉,重新弄执行docker compose up -d  就可以了

Logo

快速构建 Web 应用程序

更多推荐