跳到主要内容

常见环境搭建

consul

mac版本

教程:https://www.cnblogs.com/niceyoo/p/14223158.html 官网下载链接:https://www.consul.io/downloads.html 下载后,放入:/usr/local/bin 检查安装情况:consul --version

启动consul agent -dev

Etcd

mac版本

https://etcd.io/docs/v3.5/install/

brew update
brew install etcd
etcd --version

Zookeeper

下载地址: https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz

解压后,创建一个用于存放data的地方

image.png

到conf文件夹

image.png

复制一个cfg文件编辑:cp zoo_sample.cfg zoo.cfg 修改dataDir目录位置

image.png

启动zookeeper: sh zkServer.sh start 使用jps命令查看Java进程

image.png

QuorumPeerMain为zookeeper 查看运行状态: sh zkServer.sh status 停止运行:sh zkServer.sh stop

使用homebrew安装:brew install zookeeper 启动命令:zkServer start

image.png

安装后的默认路径为: /usr/local/etc/zookeeper

节点占用端口:2181,

RocketMQ

下载:https://rocketmq.apache.org/download/

启动:

### 启动namesrv
nohup sh bin/mqnamesrv &

### 验证namesrv是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log

Redis

Docker安装Redis

docker pull redis

使用docker-compose进行部署:

do

目录结构如下,把文件挂载到本地:

image-20240617225053149

启动:

docker-compose -f docker-compose.yml up -d

测试:

# 使用docker exec 执行容器名称为redis6容器中的redis-cli命令连接redis
docker exec -it redis1 redis-cli -a 123456
# 查看当前redis的服务信息
127.0.0.1:6379> info server

MySQL

Docker安装MySQL

docker pull mysql

使用docker-compose部署

version: '3'
services:
mysql: # 服务名称
image: mysql:latest # 或其它mysql版本
container_name: mysql1 # 容器名称
environment:
- MYSQL_ROOT_PASSWORD=123456 # root用户密码
# - TZ=Asia/Shanghai # 设置容器时区 我这里通过下面挂载方式同步的宿主机时区和时间了,这里忽略
volumes:
- ./log:/var/log/mysql # 映射日志目录,宿主机:容器
- ./data:/var/lib/mysql # 映射数据目录,宿主机:容器
- ./conf.d:/etc/mysql/conf.d # 映射配置目录,宿主机:容器
- /etc/localtime:/etc/localtime:ro # 让容器的时钟与宿主机时钟同步,避免时间的问题,ro是read only的意思,就是只读。
ports:
- 3306:3306 # 指定宿主机端口与容器端口映射关系,宿主机:容器
restart: always # 容器随docker启动自启

新建文件如下:

主要建conf.d,data,log文件夹

image-20240618110810674

启动

docker-compose -f docker-compose.yml up -d

将mysql配置文件复制一份到本地的conf.d文件夹中

docker cp mysql1:/etc/my.cnf ./my.cnf

然后停止并删除原来的容器

docker-compose down

再重启:

docker-compose -f docker-compose.yml up -d

开启远程访问:

# 进入mysql容器
docker exec -it mysql1 bash
# 连接mysql -u后接账户 -p接自定义的密码
mysql -uroot -p123456
# 使用mysql库
use mysql;
alter USER 'root'@'localhost' IDENTIFIED BY '你的密码';
update user set host = "%" where user='root';
# 刷新权限
flush privileges;

Jenkins

Docker安装Jenkins

docker pull jenkins/jenkins

当前目录创建一个jenkins_home目录

version: '3'
services:
jenkins:
user: root
restart: always
image: jenkins/jenkins
container_name: jenkins1
ports:
- 8085:8080
- 50000:50000
volumes:
- ./jenkins_home/:/var/jenkins_home/
# 将本地的docker挂载到容器里面,给jenkins使用
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /etc/docker/daemon.json:/etc/docker/daemon.json
# 将Jenkin中的公钥私钥挂载出来,用于GitHub等
- ./.ssh:/root/.ssh
# 将服务器的maven挂载到容器里面
- /root/tools/apache-maven-3.6.3:/root/apache-maven-3.6.3
- /root/.m2:/root/.m2

启动:

docker-compose up -d

image-20240619172001438

这个目录已经被我们映射出来了,直接查看密码:

 cat ./jenkins_home/secrets/initialAdminPassword 

剩余配置内容放入Jenkins自动化部署博客中

MongoDB

Docker安装

version: "3.9"
services:
mongodb:
image: mongo:4.4
container_name: mongodb1
restart: always
ports:
- "27017:27017"
volumes:
- ./data:/data/db
- ./logs:/data/logs
- ./config:/data/configdb


RabbitMQ

version: '3'
services:
rabbitmq:
image: rabbitmq:3.8-management
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin
ports:
- 15672:15672
- 5672:5672
hostname: mq

Nginx

version: '3.0'
services:
nginx:
image: nginx:latest # 镜像名称
container_name: nginx1 # 容器名字
restart: always # 开机自动重启
network_mode: host # 和主机联通
volumes: # 目录映射(宿主机:容器内)
- ./conf:/etc/nginx
- ./log:/var/log/nginx ###这里面放置日志
- ./html:/usr/share/nginx/html ###这里面放置项目目录

MySQL

version: '3'
services:
mysql: # 服务名称
image: mysql:latest # 或其它mysql版本
container_name: mysql1 # 容器名称
environment:
- MYSQL_ROOT_PASSWORD=123456 # root用户密码
# - TZ=Asia/Shanghai # 设置容器时区 我这里通过下面挂载方式同步的宿主机时区和时间了,这里忽略
volumes:
- ./log:/var/log/mysql # 映射日志目录,宿主机:容器
- ./data:/var/lib/mysql # 映射数据目录,宿主机:容器
- ./conf.d:/etc/mysql/conf.d # 映射配置目录,宿主机:容器
- /etc/localtime:/etc/localtime:ro # 让容器的时钟与宿主机时钟同步,避免时间的问题,ro是read only的意思,就是只读。
ports:
- 3306:3306 # 指定宿主机端口与容器端口映射关系,宿主机:容器
restart: always # 容器随docker启动自启

Minio

version: '3'
services:
minio:
image: minio/minio:latest
container_name: minio1
ports:
- 9000:9000
- 9001:9001
volumes:
- ./data:/data
- ./config:/root/.minio
environment:
MINIO_ROOT_USER: "root"
MINIO_ROOT_PASSWORD: "admin123"
command: server --console-address ':9001' /data
restart: always
privileged: true



Maven

version: '3'
services:
maven:
image: maven:3.6.3
container_name: maven1
volumes:
- ./.m2:/root/.m2 # 主机上 Maven 的本地仓库目录(~/.m2)挂载到容器中的 /root/.m2 目录,这样可以实现 Maven 的缓存持久化,避免每次启动容器都重新下载依赖
- ./settings.xml:/usr/share/maven/conf/settings.xml # 主机上的 settings.xml 文件挂载到容器中的 /usr/share/maven/conf/settings.xml 路径下。这样 Maven 将使用您自定义的 settings.xml 文件
working_dir: /usr/src/app # 容器的工作目录为 /usr/src/app,以便您可以在容器中执行 Maven 构建命令
command: sleep infinity # 使用了 sleep infinity 命令来替换默认的 Maven 构建命令。这个命令会让容器永远休眠,从而避免执行任何构建命令