偶尔一次,公司项目要引入消息队列了,所以,研究了下MQ在Docker的环境,整理如下
数据库我采用 mysql
因为我对mysql第一次接触,所以 我也踩了不少坑
1,数据库初始密码 mysql 5.7 开始,初始化密码的呈现方式有所改变
2,数据库启动问题 mysql 5.7 开始, 启动文件命令有所改变
3,镜像文件体积(优化了部分)
资源: erlang 18.3
dockerfile文件
From centos:7
WORKDIR /usr/local
RUN yum update -y && \
yum clean all
RUN yum install -y gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget xz lsof dos2unix && \
yum clean all
ADD otp_src_18.3.tar.gz .
WORKDIR /usr/local/otp_src_18.3
RUN ./configure --prefix=/usr/local/erlang && \
make && make install
ENV ERL_HOME /usr/local/erlang
ENV PATH $PATH:$ERL_HOME/bin
WORKDIR /home
ADD rabbitmq-server-generic-unix-3.6.15.tar.xz .
RUN mv rabbitmq_server-3.6.15 rabbitmq
ENV RABBITMQ_HOME /home/rabbitmq
ENV PATH $PATH:$RABBITMQ_HOME/sbin
ENTRYPOINT rabbitmq-plugins enable rabbitmq_management && rabbitmq-server
RUN sed -i 's/\[<<"guest">>\]/\[\]/g' ./rabbitmq/ebin/rabbit.app
EXPOSE 5672
EXPOSE 15672
CMD ["rabbitmq-server"]
因为我没有优化过过程,所以镜像文件体积还是会大很多,具体对于体积的优化, 我参考了:优化体积博客
内容具体是说:
我记着我很久前发表过一篇有关RabbitMQ 在 CentOS 7 中的安装教程,我还详细记得 RabbitMQ 需要Erlang的依赖所以下面需要注意:
1,MQ 安装前对 Erlang 进行安装
2,MQ 采用的解压版,所以并不需要安装,只需要配置环境变量和启动
3,端口问题,我们暴露了2个端口, 5672(MQ访问),15672(管理工具)
4,MQ默认来宾账户(guest)不可访问localhost, 所以,我设置了来宾账户允许访问,dockerfile中如下:
RUN sed -i 's/\[<<"guest">>\]/\[\]/g' ./rabbitmq/ebin/rabbit.app
编译:
docker build --no-cache --rm -t=rabbitmq:3.6 .
启动容器:
docker run -it -d -p 5673:5672 -p 15673:15672 --name=test rabbitmq:3.6
可以看我的码云:去码云看看
本章到此结束