用docker部署后端项目

一、搭建局域网

1.1、介绍前后端项目搭建

需要4台服务器,在同一个局域网中

1.2、操作

复制代码
# 搭建net-ry局域网,用于部署若依项目  net-ry:名字
docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1


#查看
docker network ls

能不能访问分为2种情况:

一、如果项目部署完上线了,外部不能访问内部

二、部署的时候是应该能访问的,需要看Mysql等是否安装好,防火墙应该关闭,来调试问题

复制代码
#查看防火墙状态
systemctl status firewalld

#关闭防火墙
systemctl stop firewalld


#启动docker
systemctl restart docker

注意1:关闭宿主机的防火墙,否者容器内部的MySQL、redis等服务,外部访问不了;开放端口3306、6379端口也没用。

注意2:关闭防火墙后必须重启docker,否者出现如下错误

docker: Error response from daemon: driver failed programming external connectivity on endpoint ruoyi-admin (399a34630e6ef8e4ed7cf20d46b9654c8d535d0fe44ceadebf8bd605d3da35b8): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.68.0.4:8080 ! -i br-c34635070c6f: iptables: No chain/target/match by that name.

参考链接:https://blog.csdn.net/xiegongmiao/article/details/128409967

二、安装redis

复制代码
#创建两个目录
mkdir -p /data/redis/{conf,data}

#
cd /data/redis/

ll

cd  conf

进入刚刚创建的conf目录,上传文件

#上传redis.conf文件到/data/redis/conf文件夹中

bind 0.0.0.0 充许任何主机访问

daemonize no 因为用的是容器,Redis装在容器里面,不影响输入命令

requirepass sasa 用户密码sasa

redis.conf修改

  1. 允许redis外地连接

#bind 127.0.0.1改成为

bind 0.0.0.0

  1. 开启redis验证(可选)

requirepass sasa

  1. 开启redis数据持久化(可选)

appendonly yes

复制代码
docker run -itd --name zking-redis -p 6379:6379 \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
--privileged=true --restart=always \
--network net-ry redis \
redis-server /etc/redis/redis.conf 

id启动 容器不进入

zking-redis 名字

-p 6379:6379 \ 映射端口

-v 挂载

-v /data/redis/data:/data \ 缓存数据

--privileged=true --restart=always \ 给最高权限

  1. --privileged=true :让容器root用户拥有最高权限,否则可能会出现权限不够错误

  2. redis-server /etc/redis/redis.conf:容器启动时执行的命令及读取的配置

  3. redis-6.2.6.tar.gz压缩包中找到redis.conf官方配置文件

  4. 在hub.docker.com中找到启动redis方式

测试

复制代码
#进入容器
docker exec -it zking-redis /bin/bash


root@ec98cd3af83e:/data#  whereis redis-cli
redis-cli: /usr/local/bin/redis-cli
root@ec98cd3af83e:/data# cd /usr/local/bin
root@ec98cd3af83e:/usr/local/bin# ls
docker-entrypoint.sh  redis-benchmark  redis-check-rdb  redis-sentinel
gosu                  redis-check-aof  redis-cli        redis-server
root@ec98cd3af83e:/usr/local/bin# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

三、安装Mysql

复制代码
#退出程序
exit

#退出容器
Ctrl+P+Q

# 1.创建文件夹
mkdir -p /data/mysql/{conf,data}
复制代码
#进入conf
cd  /data/mysql/conf/



# 2.上传my.cnf文件到/data/mysql/conf文件夹中 (可以将my2.cnf修改好在Linux中重命名为my.cnf)
mv my2.cnf my.cnf
  1. 修改官方my.cnf

    复制代码
     #运行mysql5.7,注意有单独的mysql镜像
     docker run --name=mysql1 -d mysql/mysql-server:5.7
     #进入容器查看/etc/my.cnf文件,修改my.cnf文件,让其支持中文
  2. 查看mysql数据保存位置

    复制代码
    cd /var/lib/mysql> 
    1. 设置密码

    -e MYSQL_ROOT_PASSWORD=sasa:设置root的密码

3.启动MySQL容器服务

复制代码
docker run -d --name zking-mysql --network net-ry  \
-v /data/mysql/conf/my.cnf:/etc/my.cnf \
-v /data/mysql/data:/var/lib/mysql \
--privileged=true --restart=always \
-e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \
mysql/mysql-server:5.7

等待时间有点久

检查

复制代码
docker ps

远程连接

复制代码
# 进入容器
docker exec -it zking-mysql /bin/bash

# 登录
mysql -u root -p;

# 创建用户及授权
grant all privileges on *.* to root@'%' identified by 'sasa' with grant option;

# 刷新权限
flush privileges; 

注意:0- 1-工具原因,复制进去记得删除

工具测试

四、部署后端服务

4.1、创建数据库

运行sql文件

4.2、使用Dockerfile自定义镜像

复制代码
# 1.构建Dockerfile镜像
1)切换到家目录
cd ~

#新建文件夹
mkdir ruoyi-admin

#切进去
cd ruoyi-admin



2)上传ruoyi-admin.jar到Dockerfile_ruoyi-admin文件所在目录

复制代码
#重命名
mv Dockerfile_ruoyi-admin Dockerfile

4)ruoyi-admin为镜像名称,开始制作镜像
docker build -t ruoyi-admin .

测试

复制代码
docker images

#运行容器
docker run -itd --name ruoyi-admin --network net-ry -p 80                                                                              80:8080  ruoyi-admin

docker ps

#进入容器
docker exec -it ruoyi-admin /bin/bash

#查看日志
cd /home/ruoyi/logs/

ls -l

测试

相关推荐
云飞云共享云桌面18 小时前
昆山精密机械公司8个Solidworks共用一台服务器
运维·服务器·网络·3d·自动化·制造
恒创科技HK18 小时前
中国香港服务器中常提到的双向/全程CN2是什么意思?
运维·服务器
MyCollege199918 小时前
win10使用ssh访问vmware虚拟机
linux·运维·centos
a栋栋栋1 天前
wsl 环境下用Docker 安装多版本MySQL
mysql·docker·容器
潮落拾贝1 天前
k8s部署kafka三节点集群
容器·kafka·kubernetes
大霞上仙1 天前
jmeter实现两个接口的同时并发
运维·服务器·jmeter
饱饱要坚持可持续发展观1 天前
docker 拉取本地镜像
docker
我就要用Cx3301 天前
配置docker常见问题
运维·docker·容器
nmxiaocui1 天前
openssl升级
linux·运维·服务器
最小的帆也能远航1 天前
2018年下半年 系统架构设计师 综合知识
linux·运维·服务器