Docker部署常用中间件
平时自己开发的时候需要部署很多中间件,这里用Docker可以一个虚拟机就能部署多个应用,不用开多台虚拟机了。
一个操作手册,记录大多数常见中间件的部署
Docker 安装
Centos7安装Docker
1、确定版本是centos7以上
2、卸载旧版本
1 2 3 4 5 6 7 8
| sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
|
3、yum安装gcc相关
1 2 3 4
| yum -y install gcc yum -y install gcc-c++ 或者一条 yum -y install gcc gcc-c++
|
4、安装需要的软件包
1
| yum install -y yum-utils
|
5、设置stable镜像仓库
1
| yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
6、更新yum软件包索引
7、安装docker ce
1
| yum -y install docker-ce docker-ce-cli containerd.io
|
8、启动docker
9、测试
10、卸载
1 2 3 4
| systemctl stop docker yum remove docker-ce docker-ce-cli containerd.io rm -rf /var/lib/docker rm -rf /var/lib/containerd
|
阿里云镜像加速
网站
1
| https://promotion.aliyun.com/ntms/act/kubernetes.html
|
自己上阿里云搜索容器镜像服务,然后创建镜像仓库个人版然后创建仓库,复制地址即可。
然后配置镜像加速器,跟着命令复制粘贴即可。
然后测试运行
然后记得在docker中登录实例。
阿里云镜像加速器目前仅限「阿里云 ECS 实例」在「同地域内网」环境下使用,且只支持拉取部分官方镜像。
如果你在 本地电脑、非阿里云服务器、或通过公网访问,即使配置了加速地址,也会被拒绝(返回 403 或超时)。
Nacos
注册中心,首先我们前提是已经安装好了Docker,然后拉取Nacos
1 2
| docker pull nacos/nacos-server:2.2.3 docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone --name nacos nacos:2.2.3
|
单机版启动nacos,然后通过Ifconfig查到centos7的ip地址然后访问http://ip地址:8848/nacos账号和密码都是nacos
然后docker ps 看看是否有没有启动好。
最好用2.2.3版本太新太老都不好,要配置很多别的东西。
Redis
首先有一个redis然后复制一个redis.conf,
1 2 3 4 5 6 7 8
| # redis.conf (精简版) bind 0.0.0.0 protected-mode yes port 6379 requirepass YourStrongPassword123! dir /data appendonly yes daemonize no
|
然后就配置好了
Mysql
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 新建mysql容器实例,也就是说mysql这些要挂容器数据卷
权限开启,挂了三个卷,日志卷,数据卷,配置卷 解决中文乱码: cd /oyyuse/mysql/conf 新建my.cnf,通过容器卷同步给mysql容器实例 [client] default_character_set=utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8 重新启动mysql容器实例再重新进入并查看字符编码 再新建库新建表再插入中文测试 结论:docker安装完MySQL并run出容器后,建议请先修改完字符集编码后再新建mysql库-表-插数据
|
1 2 3 4 5 6 7 8
| ~/uushop/ ├── docker-compose.yml ├── mysql/ │ ├── data/ │ ├── log/ │ └── conf/my.cnf └── redis/ └── redis.conf
|
最终目录结构
然后可以编排docker-compose.yml
Rocketmq
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| docker pull apache/rocketmq:4.7.1 然后mkdir rocketmq 然后cd rocketmq 然后 version: '3.8'
services: # ========== Nacos ========== nacos: image: nacos:3.0.2 container_name: uushop-nacos environment: - MODE=standalone - SPRING_DATASOURCE_PLATFORM=mysql - MYSQL_SERVICE_HOST=uushop-mysql - MYSQL_SERVICE_PORT=3306 - MYSQL_SERVICE_DB_NAME=nacos_config - MYSQL_SERVICE_USER=root - MYSQL_SERVICE_PASSWORD=123456 ports: - "8848:8848" - "9848-9849:9848-9849" depends_on: - mysql networks: - uushop-net
# ========== MySQL ========== mysql: image: mysql:5.7 container_name: uushop-mysql environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: nacos_config volumes: - ./mysql:/var/lib/mysql - ./nacos-init.sql:/docker-entrypoint-initdb.d/nacos-init.sql ports: - "3306:3306" networks: - uushop-net
# ========== Redis ========== redis: image: redis:6.0.8 container_name: uushop-redis ports: - "6379:6379" networks: - uushop-net
# ========== RocketMQ NameServer ========== rocketmq-nameserver: image: apache/rocketmq:4.7.1 container_name: uushop-rocketmq-nameserver command: sh mqnamesrv ports: - "9876:9876" volumes: - ./rocketmq/logs/nameserver:/home/rocketmq/logs networks: - uushop-net
# ========== RocketMQ Broker ========== rocketmq-broker: image: apache/rocketmq:4.7.1 container_name: uushop-rocketmq-broker command: > sh mqbroker -n uushop-rocketmq-nameserver:9876 -c /home/rocketmq/conf/broker.conf ports: - "10911:10911" # broker 通信端口 - "10909:10909" # HA 端口(VIP 通道) volumes: - ./rocketmq/broker.conf:/home/rocketmq/conf/broker.conf - ./rocketmq/store:/home/rocketmq/store - ./rocketmq/logs/broker:/home/rocketmq/logs depends_on: - rocketmq-nameserver networks: - uushop-net
# ========== RocketMQ Console (可选) ========== rocketmq-console: image: apacherocketmq/rocketmq-console:2.0.0 container_name: uushop-rocketmq-console environment: - JAVA_OPTS=-Drocketmq.namesrv.addr=uushop-rocketmq-nameserver:9876 ports: - "8080:8080" depends_on: - rocketmq-nameserver networks: - uushop-net
networks: uushop-net: name: uushop_uushop-net external: true
|