docker 部署Ruoyi 项目
docker-compose 部署偌依项目
·
代码克隆 | 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 就可以了
更多推荐
所有评论(0)