Linux 环境使用 Dockfile 制作 RocketMQ Docker 镜像。基于 centos7,制作并上传到 docker hub。RocketMQ 版本 4.7.0。
1. 概述
- 演示环境: centos7;
- 从 apache 官网下载安装 RocketMQ 4.7.0;
2. 下载 apache 官网 RocketMQ
wget https://archive.apache.org/dist/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip
unzip rocketmq-all-4.7.0-bin-release.zip
3. 生成 Dockerfile 文件
vi Dockerfile
文件内容:
FROM aaronst21/centos7_with_jdk8:1.8.0_251
MAINTAINER aaron aaronst21.163.com
# 设置环境变量
ENV ROCKETMQ_VERSION 4.7.0
ENV ROCKETMQ_HOME /usr/local/rocketmq-${ROCKETMQ_VERSION}
# 设置临时变量
ARG user=rocketmq
ARG usergroup=rocketmq
# 将解压后的 RocketMQ 包拷贝到 docker 容器中
COPY rocketmq-all-${ROCKETMQ_VERSION}-bin-release ${ROCKETMQ_HOME}
# 创建用户和组
RUN groupadd ${usergroup} &&\
useradd -g ${usergroup} ${user}
# 修改目录权限
RUN chown -R ${usergroup}:${user} ${ROCKETMQ_HOME} &&\
chown -R ${usergroup}:${user} ${JAVA_HOME} &&\
su ${user}
EXPOSE 9876 10909 10911
4. 使用 Dockerfile 创建镜像
docker build -t rocketmq:4.7.0 .
5. 为本地镜像打 tag
docker tag rocketmq:4.7.0 aaronst21/rocketmq:4.7.0
aaronst21 是 docker 用户 id。
6. 上传到 docker hub
# 登录 docker,需要输入用户名和密码
docker login
# 推送到 docker 仓库
docker push aaronst21/rocketmq:4.7.0
- 如果没有账户,到 docker 官网注册,注册地址:https://www.docker.com;
- push 上传耗时较长,请耐心等待;
- 上传完毕后,可以登录 docker hub 查询:https://hub.docker.com/repositories
7. 验证创建结果
# 下载制作的镜像
docker pull aaronst21/rocketmq:4.7.0
docker run -i -t rocketmq:4.7.0 bash
# 进入 docker container,以下命令在 container 中执行
# 启动 Namesrv
nohup sh bin/mqnamesrv &
# 启动 Broker
nohup sh bin/mqbroker -n localhost:9876 &
# 验证启动是否成功,如果能够查到 BrokerStartup 和 NamesrvStartup,说明启动成功
jps
# 关闭 Namesrv
sh ./bin/mqshutdown namesrv
# 关闭 Broker
sh ./bin/mqshutdown broker
# 退出 container
exit
本机内存小,RocketMQ 默认 jvm 内存较大,如果启动 Namesrv 和 Broker 失败,可以修改如下配置:
vi bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
vi bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"