制作RabbitMQ的docker镜像
mq版本3.6.5
#
# RabbitMQ Dockerfile
#
# https://github.com/dockerfile/rabbitmq
#
# Pull base image.
FROM i71:5000/ubuntu
# Add files.
ADD bin/rabbitmq-start /usr/local/bin/
RUN \
apt-get update && apt-get install -y wget
# Install RabbitMQ.
RUN \
/usr/bin/wget -qO - https://www.rabbitmq.com/rabbitmq-signing-key-public.asc | apt-key add - && \
echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y rabbitmq-server --force-yes && \
rm -rf /var/lib/apt/lists/* && \
rabbitmq-plugins enable rabbitmq_management rabbitmq_federation rabbitmq_federation_management && \
echo "[{rabbit, [{loopback_users, []}]}]." > /etc/rabbitmq/rabbitmq.config && \
chmod +x /usr/local/bin/rabbitmq-start
# Define environment variables.
ENV RABBITMQ_LOG_BASE /data/log
ENV RABBITMQ_MNESIA_BASE /data/mnesia
# Define mount points.
VOLUME ["/data/log", "/data/mnesia"]
# Define working directory.
WORKDIR /data
# Define default command.
CMD ["rabbitmq-start"]
# Expose ports.
EXPOSE 5672
EXPOSE 15672
制作RabbitMQ的部署yaml文件
为了进行资源隔离,我将mq放入了单独的一个namespace,使用如下文件:rabbitmq-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: mq-rtest
编写controller文件
rabbitmq-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mq
namespace: mq-rtest
labels:
name: mq
spec:
replicas: 1
selector:
name: mq
template:
metadata:
labels:
name: mq
spec:
containers:
- name: mq
image: i71:5000/rabbitmq-3.6.5:latest
ports:
- containerPort: 5672
- containerPort: 15672
volumeMounts:
- name: rabbitmq-log
mountPath: /data/log
readonly: false
- name: rabbitmq-data
mountPath: /data/mnesia
readonly: false
volumes:
- name: rabbitmq-log
hostPath:
path: /home/data/rabbitmq3.6.5/log
- name: rabbitmq-data
hostPath:
path: /home/data/rabbitmq3.6.5/mnesia
nodeSelector:
nodename: i35
制作RabbitMQ service文件
apiVersion: v1
kind: Service
metadata:
name: mq
namespace: mq-rtest
labels:
name: mq
spec:
type: NodePort
ports:
- port: 5672
name: mq-port
targetPort: 5672
nodePort: 32072
- port: 15672
name: mq-mgr-port
targetPort: 15672
nodePort: 32172
selector:
name: mq