学习教程:
- 学习Docker前后端分离项目部署
初步工作:
- 创建虚拟机,全都是选择下一步,选择桥接网络,导入centos的.ios文件.
centos官网 https://www.centos.org/download/
- 打开命令窗口查看 ip addr 或用 ifconfig 查看网络地址.
3. 使用 vim /etc/ sysconfig/ network- scripts/ ifcfg- eth0 查看ip配置信息
```shell
[root@localhost network-scripts]# ll ifcfg-ens33 # 查看文件权限
-rwxrwxrwx. 1 root root 434 Jun 26 07:53 ifcfg-ens33
[root@localhost network-scripts]# su root # 切换到管理员
[root@localhost network-scripts]# chmod 777 ifcfg-ens33 # 修改文件的权限
[root@localhost network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" # 网络接口类型
PROXY_METHOD="none" #
BROWSER_ONLY="no"
BOOTPROTO="static" # 修改为静态ip,有dhcp,none,static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes" # 是否支持IPv6
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33" # 网卡的名称
UUID="0310a1ca-3dbf-4d48-9771-5c49342d97e8"
DEVICE="ens33"
ONBOOT="yes" # 开启自动启动网络服务
IPADDR="192.168.1.110"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS1="114.114.114.114"
这里注意一下网卡的名称 ens33 大多数人的是不一样的,如果新建虚拟机输入 ip addr 报错就到这个文件修改`ONBOOT="yes" 原来一般为no的,其余的倒没有什么影响
项目打包
若依前端项目打包
在命令那里输入以下内容
D:\liudw-kaiyuan\zhux\RuoYi-Vue\ruoyi-ui> npm install # 项目构建
D:\liudw-kaiyuan\zhux\RuoYi-Vue\ruoyi-ui> npm run dev # 运行项目
D:\liudw-kaiyuan\zhux\RuoYi-Vue\ruoyi-ui> npm run build # 打包项目
这里注意打包的是时候看一下package.json文件,我的使用npm run build:prod命令进行打包
打包完成这里生成一个项目目录下生成dist文件
前端打包完成
若依后端项目打包
修改redis 地址和linux的ip一致
也是一样修改数据库的配置连接和linux的ip一样
这里只要打包这个目录就可以了,按照步骤来 先双击运行clean,然后再双击运行package,双击也可以换成第三步运行图标.
打包完成窗口会有打包的jar包的,到此后端打包结束.
下载Docker
[root@localhost tool]# yum install docker # 下载docker容器
[root@localhost tool]# docker --version # 查看docker版本是否安装成功
[root@localhost tool]# systemctl start docker # 重启docker
[root@localhost tool]# sudo vi /etc/docker/daemon.json # 进入该目录安装阿里镜像源docker pull速度更快
{"registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"] } # 该目录下的内容,最好不要有汉字
:wq保存退出,重启docker 重启 systemctl restart docker
Docker拉取Redis
[root@localhost tool]# docker pull redis # Docker拉取Redis
[root@localhost tool]# systemctl start docker # 重启容器
[root@localhost tool]# docker images # 查看有没有redis镜像
[root@localhost tool]# docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes # 运行redis,docker run表示运行的意思,--name redis 表示起个名字叫redis,-p 6379:6379表示把服务器的6379映射到docker的6379端口,这样就可以通过服务器的端口访问docker的端口,-d 表示以后台服务形式运行redis,redis redis-server --appendonly yes表示开启持久化缓存模式,可以存到硬盘
Docker拉取MySQL
[root@localhost tool]# docker pull mysql:5.7 # Docker拉取MySQL
[root@localhost tool]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:5.7 # MYSQL_ROOT_PASSWORD=root表示root的初始密码mysql:5.7.27表示操作的是mysql的5.7.27版本,没有后面的版本号的话,默认是拉取最新版
这里启动镜像mysql的时候可以测一下连接是否成功,启动镜像的命令总结在后面.
Docker拉取Nginx
[root@localhost tool]# docker pull nginx # Docker拉取Nginx
[root@localhost tool]# docker images # 这条命令可以加上这些参数-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);--digests :显示镜像的摘要信息;-f :显示满足条件的镜像;--format :指定返回值的模板文件 --no-trunc :显示完整的镜像信息; -q :只显示镜像ID
Docker拉取Docker-Compose
[root@localhost tool]# sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker- compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose # 安装Docker-Compose
[root@localhost tool]# sudo chmod +x /usr/local/bin/docker-compose # 添加可执行权限
[root@localhost tool]# docker-compose --version #检测是否安装成功
常使用的几个命令
[root@localhost tool]# systemctl restart docker # 重启容器
[root@localhost tool]# docker ps # 查看正在运行的容器,加 -aq 表示正在运行和没有运行的容器
[root@localhost tool]# docker images # 查看所有的镜像
[root@localhost tool]# docker stop $(docker ps -aq) # 停止全部容器
[root@localhost tool]# docker start $(docker ps -aq) # 启动所有容器
[root@localhost tool]# docker rm $(docker ps -aq) # 删除所有容器
[root@localhost tool]# docker rmi $(docker images -q) # 删除所有镜像
编写项目
- 文件目录及镜像
[root@localhost tool]# ls 新建的tool文件下的目录展示,docker-compose.yml,Dockerfile是文件,nginx 是目录,ruoyi-admin.jar是后端打包的jar包
docker-compose.yml Dockerfile nginx ruoyi-admin.jar
[root@localhost tool]# cd nginx/
[root@localhost nginx]# ls # 这里注意一下有nginx.conf这个文件里面是两种打包方式
html nginx.confy
[root@localhost nginx]# cd html/
[root@localhost html]# ls # html目录下是前端打包的文件
favicon.ico html index.html index.html.gz robots.txt static
[root@localhost nginx]# docker images #查看前后端所需要的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyiadmin latest e1deb2cc72ec 4 hours ago 724 MB
docker.io/nginx latest 605c77e624dd 5 months ago 141 MB
docker.io/redis latest 7614ae9453d1 6 months ago 113 MB
docker.io/mysql 5.7 c20987f18b13 6 months ago 448 MB
docker.io/java 8 d23bdf5b1b1b 5 years ago 643 MB
2.Docker文件
[root@localhost tool]# cat Dockerfile # Docker文件内容展示
FROM java:8
COPY ruoyi-admin.jar /ruoyi-admin.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/ruoyi-admin.jar"]
3.docker-compose.yml文件
[root@localhost tool]# cat docker-compose.yml #docker-compose.yml文件内容
version: "2"
services:
nginx: # 服务名称,用户自定义
image: nginx:latest # 镜像版本
ports:
- 80:80 # 前端项目暴露的端口
volumes: # 挂载
# html和nginx.conf挂载
- /tool/nginx/html:/usr/share/nginx/html
- /tool/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
ruoyiadmin:
image: ruoyiadmin:latest
build: . # 表示以当前目录下的Dockerfile开始构建镜像
ports:
- 8080:8080 #后端项目暴露的端口
privileged: true
- html里面 nginx.conf 文件
[root@localhost nginx]# cat nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /stage-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://192.168.1.103:8080/;
}
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;
#自己服务器地址:没改的话就是默认8080
proxy_pass http://192.168.1.103:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- 启动项目
[root@localhost tool]# docker-compose up -d # 根据配置文件启动项目,时间较长
[root@localhost tool]# docker ps # 查看运行的镜像
[root@localhost tool]# docker logs -t -f [后端镜像ID] # 查看运行项目的日志
效果展示
浏览器访问你linux的ip地址 我的是192.168.1.110:80
![在这里插入图片描述](https://img-blog.csdnimg.cn/b83865003d834cba99ddc1518b95c522.png
最终部署的项目就这样可以成功了,日志那里如果报错,我的是重启镜像,前面的命令中提到
总结
总结:部署项目非常好玩,部署好了有种小成就感!有不足的地方欢迎指正,一起学习,一起进步.