文章目录
- 创建自定义网络
- 安装redis
- 安装mysql
- 发布若依项目--后端
- 使用Dockerfile自定义镜像
- 运行容器
- nginx
创建自定义网络
#搭建net-ry局域网,用于部署若依项目
docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1
注意1:关闭宿主机的防火墙,否者容器内部的MySQL、redis等服务,外部访问不了;开放端口3306、6379端口也没用
关闭防火墙
systemctl stop firewalld
查看状态
systemctl status firewalld
注意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.
可以参考该地址
安装redis
创建目录
mkdir -p /data/redis/{conf,data}
上传redis.conf文件到/data/redis/conf文件夹中
redis.conf文件不需要做任何更改
#bind 127.0.0.1改成为bind 0.0.0.0:充许任何主机访问
daemonize no :将原yes改成no :redis数据持久化
requirepass sasa:redis连接密码(可注释掉,连接的时候就不要输入密码了)
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 :让容器root用户拥有最高权限,否则可能会出现权限不够错误
#--restart=always:创建之后总是自启动
--privileged=true --restart=always \
--network net-ry redis \
#容器启动时执行的命令及读取的配置--启动redis
redis-server /etc/redis/redis.conf
安装mysql
创建文件夹
mkdir -p /data/mysql/{conf,data}
上传my.cnf文件到/data/mysql/conf文件夹中 (可以将my2.cnf修改好在Linux中重命名为my.cnf)
mv my2.cnf my.cnf
#启动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 :让容器root用户拥有最高权限,否则可能会出现权限不够错误
#--restart=always:创建之后总是自启动
--privileged=true --restart=always \
#设置root的密码
-e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \
#使用mysql5.7的镜像
mysql/mysql-server:5.7
充许远程连接
进入容器
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;
创建数据库
使用navcat新建数据库
新建连接–>ry数据库–>utf8编码–>utf8_general_ci排序规则–>运行sql文件
发布若依项目–后端
使用Dockerfile自定义镜像
切换到家目录
cd ~
mdkir ruoyi-admin
cd ruoyi-admin
编写Dockerfile文件内容
vi Dockerfile
#指定基础镜像
FROM anapsix/alpine-java:8_server-jre_unlimited
#维护者信息
MAINTAINER "donkee@vip.qq.com"
#应该使用copy,但是他不是特定格式,不会解压
#正常情况,复制当前目录中的项目到容器的opt目录,并重命名为app.jar
ADD ruoyi-admin.jar /opt/app.jar
#暴露8080端口
EXPOSE 8080
#再容器启动时执行以下命名,相当于执行后端服务--java -jar
ENTRYPOINT ["java","-jar","/opt/app.jar"]
上传ruoyi-admin.jar到Dockerfile文件所在目录
rz ruoyi-admin.jar
zking-admin为镜像名称,开始制作镜像
v1.0后面有一个==.==
docker build -t zking-admin:v1.0 .
没加会报错
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.Install the buildx component to build images with BuildKit:https://docs.docker.com/go/buildx/
"docker build" requires exactly 1 argument.
See 'docker build --help'.
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
------------------------------------------------------------------------------------------------------------
DEPRECATED:遗留构建器已弃用,并将在将来的版本中删除。
安装builddx组件来使用BuildKit构建映像:
https://docs.docker.com/go/buildx/
“docker build”只需要1个参数。
参见“docker build—help”。用法:docker build [OPTIONS] PATH | URL | -从Dockerfile构建镜像
运行容器
docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080 ruoyi-admin:v1.0
**报错:**因为虚拟机之前就安装过tomcat,所用对产生端口冲突
解决:
端口冲突,关闭Tomcatsystemctl stop tomcat
如果设置了自启,关闭自启systemctl disable tomcat
报错:Error response from daemon: pull access denied for zking-admin, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
**报错原因:**镜像没加版本号
查看后端日志,因为是在容器里面,所用先进容器,然后进入
cd /home/ruoyi/logs
sys-error.log(错误日志) sys-info.log(运行日志) sys-user.log(用户日志)
nginx
创建目录
mkdir -p /data/nginx/{conf,html}
上传nginx.conf至/data/nginx/conf文件夹中
nginx.conf文件修改解释
运行启动容器
docker run -itd --name zking-nginx --network net-ry -p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/html:/usr/share/nginx/html \
--privileged=true --restart=always \
nginx
跟换目录
cd /data/nginx/html
上传dist.zip文件
rz dist.zip
解压
unzip dist.zip
验证
浏览器:IP地址