Docker容器化部署项目实践全流程springboot+mybatis+redis+rabbitmq+nginx+nacos

1. docker 安装

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
-- sudo systemctl start docker

通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0h1m9mpk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2. 安装redis

2.1 拉取镜像(最新)

docker pull redis

2.2 修改配置(配置文件从官网获取后修改)

http://download.redis.io/redis-stable/redis.conf

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize yes#默认no,配置文件方式启动需要改成yes

dir  ./ #输入本地redis数据库存放文件夹(可选)

appendonly yes #redis持久化(可选)

2.3 启动命令

docker 配置文件启redis

docker run -p 6379:6379 --name redis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /home/redisdata:/home/redisdata -d redis redis-server /etc/redis/redis.conf --appendonly yes
# 重新启动
docker restart redis
# 查看日志
sudo docker logs redis

3. 安装 rabbitmq

3.1 拉取镜像(最新)

docker pull rabbitmq:management

3.2 自定义用户名密码启动

docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management
## 重启
docker restart rabbit

4. 安装mysql(5.7版本)

4.1 拉取mysql 版本镜像

docker pull mysql:5.7

4.2 运行mysql容器

docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

4.3 设置

# 进入容器
docker exec -it mysql bash
# 登录
mysql -uroot -p
# 设置永不过期
alter user 'root'@'localhost' password expire never;
# 设置客户端可连接
use mysql;
select 'host' from user where user='root';
update user set host = '%' where user ='root';
flush privileges;

5.安装nacos(1.4.2版本)

5.1 拉取镜像

docker pull nacos/nacos-server:1.4.2

5.2 新建nacos挂载目录

mkdir -p /home/nacos/logs/   # 新建logs目录
mkdir -p /home/nacos/init.d/  


5.3 修改配置


vim /home/nacos/init.d/custom.properties # 修改配置文件

要配置mysql,如果是本地,也不能直接127.0.0.1,因为docker容器也有对应的ip,所以得查看一下对应的ip
docker inspect mysql | grep IPAddress    #mysql是对应的容器名字
custom.properties 配置文件内容如下:
server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848
spring.datasource.platform=mysql

db.num=1


# 这里要对应ip,以及对应的数据库
db.url.0=jdbc:mysql://172.17.0.4:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=password

nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false

management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.naming.expireInstance=true

5.3 启动容器

docker  run --name nacos -p 8848:8848   \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /home/nacos/logs:/home/nacos/logs \
-v /home/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-d nacos/nacos-server:1.4.2

6. springboot项目制作docker镜像

6.1 Dockerfile创建,内容如下

# Docker image for springboot file run
# VERSION 0.0.1
# Author: liulin
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER liulin <larry_mall@163.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD okex-service-0.0.1-SNAPSHOT.jar okex-server.jar
# 运行jar包
RUN bash -c 'touch /okex-server.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/okex-server.jar"]

6.2 Springboot 项目打包jar

6.3 上传到服务器,Dockerfile和jar放一起

生成镜像命令如下,注意后面的点

docker build -t okex-server .

6.4 运行项目

docker run -d -p 6060:6060 okex-server
// 查看容器实时日志
sudo docker logs  92baabf6b871 -f --tail=100
// 查看容器日志位置
docker inspect --format='{{.LogPath}}' 3b851af14e9e

7.部署前端项目

7.1 安装与配置Nginx容器

# 拉最新的镜像
docker pull nginx:latest
# 运行 
docker run --name nginx -p 80:80 -d nginx
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
运维项目经验是很宝贵的,以下是基于Nginx+Nacos+MySQL+Redis+RabbitMQ的运维项目经验: 1. Nginx Nginx是一款高性能的Web服务器和反向代理服务器。在运维过程中,需要对Nginx进行配置和监控,以确保其运行稳定。 - 配置 Nginx配置文件的路径为"/etc/nginx/nginx.conf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - worker_processes:指定工作进程数,一般根据CPU核心数进行设置。 - pid:指定进程ID的存储路径。 - error_log:指定错误日志的存储路径。 - access_log:指定访问日志的存储路径。 - http:指定HTTP协议的配置项,如代理服务器、缓存等。 - server:指定服务器的配置项,如监听端口、域名等。 - 监控 可以使用Nginx自带的状态模块,通过访问"http://localhost:8080/nginx_status"来获取Nginx的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 2. Nacos Nacos是一款开源的服务发现、配置管理和动态DNS解析系统。在运维过程中,需要对Nacos进行部署和配置,以确保其正常运行。 - 部署 Nacos部署可以使用Docker、Kubernetes等容器技术进行部署,也可以直接下载二进制包进行部署。在部署过程中,需要注意以下几点: - 需要占用的端口:Nacos默认使用8848端口。 - 数据库配置:Nacos需要使用MySQL或者MariaDB作为数据存储的后端,需要进行相关的数据库配置。 - 配置文件的修改:Nacos的配置文件位于conf目录下,可以根据实际情况进行修改。 - 配置 在Nacos中,需要进行以下配置: - 服务注册:通过Nacos的API,将需要注册的服务注册到Nacos中。 - 配置管理:将需要管理的配置文件上传到Nacos中,并设置相应的命名空间、数据ID和分组。 3. MySQL MySQL是一款流行的关系型数据库管理系统。在运维过程中,需要对MySQL进行配置和监控,以确保其运行稳定。 - 配置 MySQL的配置文件的路径为"/etc/my.cnf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - port:指定MySQL的监听端口。 - bind-address:指定MySQL的监听地址。 - max_connections:指定MySQL的最大连接数。 - log-error:指定错误日志的存储路径。 - slow-query-log:指定慢查询日志的存储路径。 - 监控 可以使用MySQL自带的状态变量和性能指标,通过执行"SHOW STATUS"和"SHOW VARIABLES"语句来获取MySQL的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 4. Redis Redis是一款高性能的内存数据库。在运维过程中,需要对Redis进行配置和监控,以确保其运行稳定。 - 配置 Redis的配置文件的路径为"/etc/redis/redis.conf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - bind:指定Redis的监听地址。 - port:指定Redis的监听端口。 - daemonize:指定Redis是否以守护进程的方式运行。 - logfile:指定Redis的日志文件路径。 - maxclients:指定Redis的最大连接数。 - 监控 可以使用Redis自带的命令,如"INFO",来获取Redis的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 5. RabbitMQ RabbitMQ是一款开源的消息队列系统。在运维过程中,需要对RabbitMQ进行部署和配置,以确保其正常运行。 - 部署 RabbitMQ部署可以使用Docker、Kubernetes等容器技术进行部署,也可以直接下载二进制包进行部署。在部署过程中,需要注意以下几点: - 需要占用的端口:RabbitMQ默认使用5672端口。 - 用户名和密码:在RabbitMQ中,需要使用用户名和密码进行身份验证,需要进行相应的用户配置。 - 配置 在RabbitMQ中,需要进行以下配置: - 队列的创建:通过RabbitMQ的API,创建需要使用的队列。 - 交换机的创建:通过RabbitMQ的API,创建需要使用的交换机。 - 路由键的绑定:通过RabbitMQ的API,将队列和交换机进行绑定,并指定相应的路由键。 总体来说,基于Nginx+Nacos+MySQL+Redis+RabbitMQ的运维项目经验需要对以上组件进行深入理解和熟练掌握,才能更好地进行运维管理。在实践中,需要不断积累经验和总结,以便能够更好地应对各种问题和挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值