Docker环境下部署常用软件服务的完整流程,例如mysql,redis,elasticsearch,nginx等常用软件服务!以及springboot项目部署

部署软件安装

1. 安装docker
2. 安装mysql
3. 安装redis
4. 安装elasticsearch
5. 安装nacos
6. 安装seata
7. 安装sentinel
8. 安装minio
9. 安装nginx部署前端项目
10. 安装启动springboot项目

注:目前先安装这些,后续有别的会同步更新

安装docker

简介

Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。

注意:原则上部署到docker,如果需要部署到其他,如宝塔,应与其他同事及项目经理说明,同时做好文档说明


Ubuntu(使用 apt-get 进行安装

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Step 3: 写入软件源信息
echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
 "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
 sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

CentOS (使用 yum 进行安装)

 # step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils

# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

安装校验

 root@iZbp12adskpuoxodbkqzjfZ:$ docker version
    Client: Docker Engine - Community
	 Version:           28.3.0
	 API version:       1.51
	 Go version:        go1.24.4
	 Git commit:        38b7060
	 Built:             Tue Jun 24 15:44:12 2025
	 OS/Arch:           linux/amd64
	 Context:           default
	
	Server: Docker Engine - Community
	 Engine:
	  Version:          28.3.0
	  API version:      1.51 (minimum version 1.24)
	  Go version:       go1.24.4
	  Git commit:       265f709
	  Built:            Tue Jun 24 15:44:12 2025
	  OS/Arch:          linux/amd64
	  Experimental:     false
	 containerd:
	  Version:          1.7.27
	  GitCommit:        05044ec0a9a75232cad458027ca83437aae3f4da
	 runc:
	  Version:          1.2.5
	  GitCommit:        v1.2.5-0-g59923ef
	 docker-init:
	  Version:          0.19.0
	  GitCommit:        de40ad0

修改镜像源

# 由于国外的镜像源非常慢,经常拉取不到镜像或者失败,使用的是国内的轩辕镜像
# 需要在/etc/docker/daemon.json修改,没有则创建即可
{
   
   
  "registry-mirrors": ["https://docker.xuanyuan.me"]  
}
# 修改完需要执行
sudo systemctl daemon-reload
sudo systemctl restart docker

安装docker-compose

# 最新版
curl -L curl -L https://github.com/docker/compose/releases/download/v2.39.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 授予执行权限
sudo chmod +x /usr/local/bin/docker-compose

卸载docker

# 1. 删除Docker容器
docker rm -f $(docker ps -a -q)
# 2. 删除Docker镜像
docker rmi -f $(docker images -q)
# 3. 删除Docker卷
docker volume rm $(docker volume ls -q)
# 4. 卸载Docker CE(社区版)
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# 5. 删除残留配置文件
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# 6. 删除Docker组(可选)
sudo groupdel docker
# 7. 清理APT缓存(可选)
sudo apt-get autoremove --purge && sudo apt-get clean

docker已安装成功,我们就来安装项目所需要的软件,例如mysql,redis,elasticsearch,minio等。

安装mysql


第一步:先拉取镜像,目前我们需要的mysql最低的要求是8.0以上的,安装以8.4.5为例

docker pull mysql:8.4.5
# 如需要最新版本
# docker pull mysql:latest

可使用docker images查看拉取的镜像

root@iZbp12adskpuoxodbkqzjfZ:$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mysql        8.4.5     060652337213   2 months ago   777MB

第二步:创建持久化目录,一定要考虑数据持久化的问题。如果没有挂在持久化数据卷,一旦MySQL容器被销毁,则数据将会全部丢失。

# 用于存放mysql配置文件
mkdir -p /home/mysql/conf
# 用于存放mysql数据
mkdir -p /home/mysql/data

第三步:启动MySQL容器

docker run -itd -p 3306:3306 --restart=always --name mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=tAgONhU2pICMbfT  -e TZ=Asia/Shanghai mysql:8.4.5
## 解释
## docker run -itd 是docker中用于以后台交互模式启动容器的命令组合,其中 -i 保持标准输入打开,-t 分配伪终端,-d 使容器在后台运行。
## -p 3306:3306 是将容器的 MySQL 3306(后者) 端口映射到宿主机的 3306(前者) 端口
## --restart=always 是docker开机启动,失败也会一直重启,创建容器时没有添加参数,导致的后果是:当 docker 重启时,容器未能自动启动
## --name 为容器指定一个名称为 mysql
## -v‌ 或 ‌--volume‌ 是挂载主机目录或命名卷到容器。例如将mysql容器中的/etc/mysql/conf.d挂载到宿主主机/home/mysql/conf下。
## --env‌ 或 ‌-e‌ 是设置容器内的环境变量。MYSQL_ROOT_PASSWORD=tAgONhU2pICMbfT 是设置mysql中root的密码
## mysql:8.4.5 是要启动的容器镜像

第四步:查看mysql是否安装启动成功

docker ps -f name=mysql
## 也可以查看全部容器状态 docker ps -a
# CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS                                                    NAMES
# 6d0db98107e1   mysql:8.4.5   "docker-entrypoint.s…"   3 days ago   Up 3 days   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp   mysql

## 安装启动成功状态显示Up和端口信息
## 可进去容器中执行命令,有两种方式
## 第一种,直接进入
docker exec -it 6d0db98107e1 mysql -uroot -p
## 第二种,先进入bash命令
docker exec -it 6d0db98107e1 /bin/bash
## 再进入mysql
mysql -uroot -p
## 6d0db98107e1 为容器id,即为字段CONTAINER ID,可执行docker ps -a查看

## 如没有成功可执行命令查看日志
docker logs mysql

到这mysql就安装成功,接下来就是mysql操作了,例如开远程访问等操作。

## 开远程操作,尽量不要开root用户远程
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database.* TO 'username'@'%';
## 解释
## username 创建的用户名
## password 创建用户名的密码,尽可能复杂些
## database 远程访问的数据库
## 整体就是,创建一个username的用户名来单独专门访问database数据库

安装Redis


简介

Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制[集群],Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性[磁盘],并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性【集群】。

Redis的特点

  • Redis读取的速度是110000次/s,写的速度是81000次/s
  • Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。线程安全
  • 支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
  • 持久化–磁盘,主从复制(集群)步:redis版本没有要求,拉取最新版本即可

第一步:拉取redis镜像

docker pull redis:latest

第二步:创建持久化目录

# 用于存放redis配置文件
mkdir -p /home/redis/conf
# 用于存放redis数据
mkdir -p /home/redis/data

需要在/home/redis/conf下创建redis.conf文件

touch redis.conf

编辑redis.conf文件,redis.conf文件内容如下,按照实际修改

# 是否允许远程连接,正式不建议开远程
# bind 127.0.0.1 -::1

# Redis 6.0 及以上版本引入了保护模式,需要远程则为no,否则为yes
protected-mode no

port 6379

tcp-backlog 511
#redis密码 强烈建议设置复杂一些
requirepass Mx1TwBazxKl3QbDg

timeout 0

tcp-keepalive 300

daemonize no

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

databases 30

always-show-logo yes

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-disable-tcp-nodelay no

replica-priority 100

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

appendonly yes

appendfilename "appendonly.aof"

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

lua-time-limit 5000

slowlog-max-len 128

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100

activerehashing yes

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes

第三步:启动redis容器

docker run -itd --name redis --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data redis redis-server /etc/redis/redis.conf

命令如上安装mysql有介绍,不做赘述

安装elasticsearch


简介

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

Elasticsearch 教程Elasticsearch是一个实时分布式的开源全文搜索和分析引擎。它用于单页应用程序(SPA)项目。Elasticsearch是一个用Java开发的开放源码,世界上许多大组织都在使用它。它是根据Apache许可证2.0版授权的。

第一步:拉取elasticsearch镜像,由于小弟项目使用的是7.17.15,所以此教程就以此版本为主

docker pull elasticsearch:7.17.15

第二步:创建持久化目录

# config 挂载配置文件
# data   数据
# plugins 插件,主要放分词器的啦
mkdir -p /home/elasticsearch{
   
   config,data,plugins}
# 注意注意,data文件需要权限
chmod 777 /home/elasticsearch/data

进去config目录,创建文件elasticsearch.yml

cd /home/elasticsearch/config
touch elasticsearch.yml

elasticsearch.yml内容如下

# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
#       Before you set out to tweak and tune the configuration, make sure you
#       understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
#cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
#path.data: /path/to/data
#
# Path to log files:
#
#path.logs: /path/to/logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
#cluster.initial_master_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
#
# ---------------------------------- Security ----------------------------------
#
#                                 *** WARNING ***
#
# Elasticsearch security features are not enabled by default.
# These features are free, but require configuration changes to enable them.
# This means that users don’t have to provide credentials and can get full access
# to the cluster. Network connections are also not encrypted.
#
# To protect your data, we strongly encourage you to enable the Elasticsearch security features. 
# Refer to the following documentation for instructions.
#
# https://www.elastic.co/guide/en/elasticsearch/reference/7.16/configuring-stack-security.html
ingest.geoip.downloader.enabled: false

注意:具体要求具体配置即可

第三步:启动elasticsearch容器

docker run -itd --restart=always --name elasticsearch -p 9200:9200 -p 9300:9300 -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/elasticsearch/data:/usr/share/elasticsearch/data -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" elasticsearch:7.17.15

验证是否成功

root@iZbp12adskpuoxodbkqzjfZ:$ curl 127.0.0.1:9200
{
   
   
  "name" : "bde65d9ac2a2",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "criLqflqRzeG_IxDs7byxA",
  "version" : {
   
   
    "number" : "7.17.15",
    "build_flavor" : 
好的,这是一个比较复杂的问题,我尽量简要地回答。 1. Docker部署: a. 安装Docker的依赖:yum install -y yum-utils device-mapper-persistent-data lvm2 b. 添加Docker的yum源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo c. 安装Docker:yum install docker-ce d. 启动Docker:systemctl start docker e. 设置Docker开机自启动:systemctl enable docker 2. Mysql部署: a. 安装Mysql的依赖:yum install -y wget b. 下载Mysql的yum源:wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm c. 安装Mysql的yum源:yum localinstall -y mysql80-community-release-el7-3.noarch.rpm d. 安装Mysql:yum install -y mysql-community-server e. 启动Mysql:systemctl start mysqld f. 查看Mysql的初始密码:grep 'temporary password' /var/log/mysqld.log g. 登录Mysqlmysql -u root -p h. 修改Mysql的密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password'; 3. Elasticsearch部署: a. 安装Elasticsearch的依赖:yum install -y java-1.8.0-openjdk b. 下载Elasticsearch:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz c. 解压Elasticsearch:tar -zxvf elasticsearch-7.10.1-linux-x86_64.tar.gz d. 进入Elasticsearch目录:cd elasticsearch-7.10.1/ e. 启动Elasticsearch:./bin/elasticsearch 4. Redis部署: a. 安装Redis的依赖:yum install -y gcc make b. 下载Redis:wget http://download.redis.io/releases/redis-6.0.9.tar.gz c. 解压Redis:tar -zxvf redis-6.0.9.tar.gz d. 进入Redis目录:cd redis-6.0.9/ e. 编译Redis:make f. 启动Redis:./src/redis-server 5. Nginx部署: a. 安装Nginx的依赖:yum install -y gcc pcre-devel openssl-devel b. 下载Nginx:wget http://nginx.org/download/nginx-1.18.0.tar.gz c. 解压Nginx:tar -zxvf nginx-1.18.0.tar.gz d. 进入Nginx目录:cd nginx-1.18.0/ e. 编译Nginx:./configure --prefix=/usr/local/nginx --with-http_ssl_module f. 安装Nginx:make && make install g. 启动Nginx:/usr/local/nginx/sbin/nginx 6. Kafka的部署: a. 安装Kafka的依赖:yum install -y java-1.8.0-openjdk b. 下载Kafka:wget https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz c. 解压Kafka:tar -zxvf kafka_2.13-3.0.0.tgz d. 进入Kafka目录:cd kafka_2.13-3.0.0/ e. 启动Zookeeper:bin/zookeeper-server-start.sh config/zookeeper.properties f. 启动Kafka:bin/kafka-server-start.sh config/server.properties 以上是大致的步骤,具体的细节可能会有所不同,还请您根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值