文章目录

前言

一、拉取镜像、运行容器

  • 1.1 MySQL安装
  • 1.2 Redis安装
  • 1.3 Nginx安装
  • 1.4 RabbitMQ安装
  • 1.4.1 安装步骤
  • 1.4.2 Web-UI界面无法访问
  • 1.5 Elasticsearch安装
  • 1.5.1 安装步骤
  • 1.5.2 9200端口无法访问
  • 1.6 Logstash安装
  • 1.6.1 安装步骤
  • 1.6.2 插件安装失败
  • 1.6.3 修改镜像地址
  • 1.7 Kibana安装
  • 1.8 MongoDB安装
  • 1.9 MinIO安装
  • 1.10 docker全部环境安装完成

二、SpringBoot应用部署

  • 2.1 构建所有Docker镜像并上传
  • 2.2 部署mall-admin
  • 2.3 部署mall-search
  • 2.4 部署mall-port
  • 2.5 开启防火墙
  • 2.6 访问接口进行测试
  • 2.7 补充:docker启动容器时报错:iptables: No chain/target/match by that name
  • mall-admin
  • mall-search
  • mall-portal
  • 接口文档

前言

1)docker cp 复制文件和目录

Docker是一种流行的容器化平台,它允许开发人员在独立、可移植的环境中构建、打包和部署应用程序。在使用Docker时,常常需要在Docker容器和主机之间进行文件的复制和共享。Docker提供了一个名为docker cp的命令,可以轻松地在容器和主机之间复制文件和目录。

docker cp是Docker提供的一个用于在主机和容器之间复制文件和目录的命令,语法如下:

  • 从容器复制文件到主机(将容器中的文件复制到主机):docker cp 容器id:容器内目录 主机目录。容器id或名称均可
docker cp 容器id:容器内目录 主机目录
docker cp 容器id:容器内文件 主机目录

#将mysql容器/etc/mysql目录下的文件复制到宿主机/mydata/mysql/conf目录下
docker cp 4b1a0fe53315:/etc/mysql/ /mydata/mysql/conf
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 从主机复制文件到容器(将主机中的文件复制到容器):docker cp 主机目录 容器id:容器内目录。容器id或名称均可
docker cp 主机目录 容器id:容器内目录

#将主机mall.sql文件复制到mysql容器的/目录下
docker cp /mydata/mall.sql mysql:/
  • 1.
  • 2.
  • 3.
  • 4.

注:docker cp命令会假定容器路径相对于容器的 /(根)目录,主机路径则是相对于执行 docker cp 命令的当前目录

2)修改虚拟内存vm.max\_map\_count大小

vm.max_map_count是一个与内核虚拟内存子系统相关的参数,用于控制进程可以拥有的内存映射区域的最大数量。它通常用于限制一个进程可以打开的文件数量,特别是在使用大量内存映射文件的情况下。

在Linux系统上,vm.max_map_count参数的默认值通常是较小的数值,例如65530。然而,对于一些需要大量内存映射的应用程序或者特定的使用场景,可能需要修改虚拟内存区域大小、增加该参数的值,以便支持更多的内存映射区域,否则可能会因为过小而无法启动。有两种方式可以设置虚拟内存:

#法一(临时修改,不推荐)
sysctl -w vm.max_map_count=262144   #使用sysctl命令在运行时临时修改参数的值
sysctl -a | grep vm.max_map_count   #查看vm.max_map_count配置
cat /proc/sys/vm/max_map_count

#法二(永久设置,推荐)
vi /etc/sysctl.conf
vm.max_map_count=262144     #在打开的文件中新增内容,设置虚拟内存
sysctl -p                   #重新加载/etc/sysctl.conf文件中的所有参数值,使设置的虚拟内存生效(如果你修改了/etc/sysctl.conf中的值,需要使用该命令才能生效)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

3)重启网络、检查Docker网络配置

如果网络配置修改、导致某些服务起不来,可通过如下命令重启网络:

# 重新加载系统环境变量文件/etc/profile,以便使修改后的环境变量生效
source /etc/profile

#检查Docker网络设置
docker network ls
docker network inspect <network_name>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

4)获取容器内部的IP地址

docker inspect <container_id_or_name> | grep IPAddress
curl http://<ip_address>:9200/    #测试连接
  • 1.
  • 2.

一、拉取镜像、运行容器

1.1 MySQL安装

  • 下载MySQL5.7的docker镜像:
docker pull mysql:5.7
  • 1.
  • 使用如下命令启动MySQL服务:
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 参数说明
  • \-p 3306:3306:将容器的3306端口映射到主机的3306端口
  • \-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
  • \-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  • \-v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
  • \-e MYSQL\_ROOT\_PASSWORD=root:初始化root用户的密码,可自行设置
  • 进入运行MySQL的docker容器:
docker exec -it mysql /bin/bash
  • 1.
  • 使用MySQL命令打开客户端:
mysql-uroot -proot --default-character-set=utf8
  • 1.
  • 创建mall数据库:
create database mall character set utf8
  • 1.
  • 安装上传下载插件,并将document/sql/mall.sql上传到Linux服务器上:
yum-y install lrzsz
  • 1.
  • mall.sql文件拷贝到mysql容器的/目录下:
docker cp /mydata/mall.sql mysql:/
  • 1.
  • 将sql文件导入到数据库:
use mall;
source /mall.sql;
  • 1.
  • 2.
  • 创建一个reader:123456帐号并修改权限,使得任何ip都能访问:
grant all privileges on *.* to 'reader' @'%' identified by '123456';
  • 1.

1.2 Redis安装

  • 下载Redis7的docker镜像:
docker pull redis:7
  • 1.
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-d redis:7 redis-server --appendonly yes


#本人选用该方式,主机端口改为36379,以免与本地的redis冲突;--restart=always  设置redis随docker自启动
docker run --restart=always -p 36379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf


#在网上看到更详细的,将日志文件也挂载到主机目录。第二种就行,可根据自己需要 选择是否将日志文件挂载到主机指定目录
docker run --name redis --restart=always -p 6379:6379 \
-v /data/redis/conf/redis.conf:/data/redis/conf/redis.conf \
-v /data/redis/data:/data/redis/data \
-v /data/redis/log/redis.log:/data/redis/log/redis.log \
-d redis redis-server /data/redis/conf/redis.conf