本篇从已有虚拟机/服务器 安装好dokcer为基础开始讲解
1.部署mysql
创建conf data init三个文件夹
conf目录存放在mysql配置文件
init目录存放着若依数据库sql文件(从navicat导出的并非若依框架自带sql)
创建一个属于本次若依部署的网段(只有在一个网段的容器才能通过容器名通信)
启动mysql命令 -v是挂载,宿主机文件挂载到容器中
docker run -d --name mysql -p 3309:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123 -v /usr/yxt/mysql/data:/var/lib/mysql -v /usr/yxt/mysql/init:/docker-entrypoint-initdb.d -v /usr/yxt/mysql/conf:/etc/mysql/conf.d --network ruoyinet mysql
通过navicat连接查看
mysql部署成功
2.部署Redis
docker run -d --name redis -p 6379:6379 --network ruoyinet redis
3.部署后端服务
修改 redis和mysql连接的ip地址换为容器名称
上传若依的jar包,并编写一个dockerfile文件
进入Dockerfile文件目录执行命令 打包成镜像
docker build -t ryadmin .
启动镜像为容器
docker run -d --name ryadmin -p 8090:8090 --network ruoyinet ryadmin
网页测试访问接口或查看容器日志 后端服务启动成功
4.部署前端服务
上传打包好的若依前端
编写nginx.conf 文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/json;
sendfile on;
keepalive_timeout 65;
server {
listen 8091;
# 指定前端项目所在的位置
location / {
root /usr/share/nginx/html/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ryadmin:8090/;
# rewrite /api/(.*) /$1 break;
# proxy_pass http://ramin:8090;
}
}
}
启动docker中nginx镜像并将前端项目与配置文件进行挂载
docker run -d --name nginx -p 8091:8091 -v /usr/yxt/nginx:/usr/share/nginx/html -v /usr/yxt/nginx/nginx.conf:/etc/nginx/nginx.conf --network ruoyinet nginx
访问前端页面 成功
5.使用dockerCompose部署
Docker Compose通过一个单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。
先将前面的容器全部删除
编写一个docker-compose.yml文件
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3307:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "/usr/yxt/mysql/data:/var/lib/mysql"
- "/usr/yxt/mysql/init:/docker-entrypoint-initdb.d"
- "/usr/yxt/mysql/conf:/etc/mysql/conf.d"
networks:
- ruoyinet
redis:
image: redis
container_name: redis
ports:
- "6379:6379"
networks:
- ruoyinet
ryadmin:
build:
context: /usr/yxt/radmin
dockerfile: Dockerfile
container_name: ryadmin
ports:
- "8090:8090"
networks:
- ruoyinet
depends_on:
- mysql
- redis
nginx:
image: nginx
container_name: nginx
ports:
- "8091:8091"
volumes:
- "/usr/yxt/nginx:/usr/share/nginx/html"
- "/usr/yxt/nginx/nginx.conf:/etc/nginx/nginx.conf"
depends_on:
- ryadmin
networks:
- ruoyinet
networks:
ruoyinet:
name: rynet
在docker-compose.yml文件目录下输入命令
docker compose up -d