FROM ubuntu:14.04
MAINTAINER Jlive Liu "iliujun_live@163.com"
# Description
LABEL Description="This image is used to start metaq" Vendor="Arvato System" Version="1.6.2"
# Define ENV
ENV JAVA_HOME=/opt/jdk
ENV METAQ_HOME=/opt/metaq
ENV PATH=$METAQ_HOME/bin:$PATH
# Exporse ports
EXPOSE 8080 8123 8120
# Volume
VOLUME ["$METAQ_HOME/conf","$METAQ_HOME/logs","$METAQ_HOME/data","$METAQ_HOME/datalog"]
ADD . /opt
# Define entrypoint
ENTRYPOINT ["metaServer.sh", "start"]
[root@metaq01 ~]# docker images
REPOSITORY
metaq
方式二:从基础镜像直接安装jdk,metaq
cat >Dockerfile <<'HERE'
FROM ubuntu:14.04
MAINTAINER Jlive Liu "iliujun_live@163.com"
# Description
LABEL Description="This image is used to start metaq" Vendor="Arvato System" Version="1.6.2"
# Install curl
RUN echo "deb http://mirrors.sohu.com/ubuntu trusty main restricted universe multiverse" > /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get autoclean
# Define ENV
ENV JAVA_HOME=/opt/jdk
ENV METAQ_HOME=/opt/metaq
ENV PATH=$METAQ_HOME/bin:$PATH
# Install jdk
#RUN curl http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.tar.gz|tar -zxvf - -C /opt
RUN curl http://192.168.8.254/soft/jdk-8u92-linux-x64.tar.gz|tar -zxvf - -C /opt
RUN mv /opt/jdk1.8.0_92 /opt/jdk
# Install metaq
#RUN curl http://fnil.net/downloads/metaq-server-1.4.6.2.tar.gz|tar -zxvf - -C /opt
RUN curl http://192.168.8.254/soft/metaq-server-1.4.6.2.tar.gz|tar -zxvf - -C /opt
RUN mv /opt/taobao/metamorphosis-server-wrapper /opt/metaq
RUN rm -rf /opt/taobao
RUN sed -i -e '/^#JAVA_HOME/s/^#//' -e "/^JAVA_HOME=/a BASE_DIR=$METAQ_HOME" /opt/metaq/bin/env.sh
RUN
sed -i
'/enableHttp/s/false/true/'
# Exporse ports
EXPOSE 8080 8123 8120
# Volume
VOLUME ["$METAQ_HOME/conf","$METAQ_HOME/logs","$METAQ_HOME/data","$METAQ_HOME/datalog"]
# Define entrypoint
ENTRYPOINT ["metaServer.sh", "start"]
HERE
docker build -t metaq .
[root@metaq01 ~]# docker images
REPOSITORY
metaq
提示:两种比较而言,方式一占用空间要小一半,部署上更快捷,推荐方式一
三.配置metaq集群
metaq01(192.168.8.101)
1.配置文件
mkdir /opt/metaq
docker run -tid --name=test metaq
docker cp test:/opt/metaq/conf /opt/metaq
docker rm -f test
[system]
brokerId=0
numPartitions=1
dataPath=/opt/metaq/data
dataLogPath=/opt/metaq/datalog
hostName=192.168.8.101
serverPort=8123
dashboardHttpPort=8120
unflushThreshold=0
unflushInterval=10000
maxSegmentSize=1073741824
maxTransferSize=1048576
deletePolicy=delete,168
deleteWhen=0
flushTxLogAtCommit=1
stat=true
updateConsumerOffsets=false
[zookeeper]
zk.zkConnect=192.168.8.101:2181,192.168.8.102:2181,192.168.8.103:2181
zk.zkSessionTimeoutMs=30000
zk.zkConnectionTimeoutMs=30000
zk.zkSyncTimeMs=5000
[topic=test]
stat=true
[topic=meta-test]
stat=true
docker run -tid --restart=always
[INFO] [main] 06-27 12:12:30,957 [MetaMorphosisBroker] - Starting metamorphosis server...
[INFO] [main] 06-27 12:12:30,958 [MetaMorphosisBroker] - Start metamorphosis server successfully
[WARN] [main] 06-27 12:12:30,958 [AbstractBrokerPlugin] - Starting plugin:jettyBroker
[INFO] [main] 06-27 12:12:30,959 [Server] - jetty-7.6.1.v20120215
[INFO] [main] 06-27 12:12:30,989 [AbstractConnector] - Started SelectChannelConnector@0.0.0.0:8080
[INFO] [main] 06-27 12:12:30,990
[AbstractBrokerPlugin] - Started broker
plugin:[jettyBroker:com.taobao.metamorphosis.http.MetamorphosisOnJettyBrok
[WARN] [main] 06-27 12:12:30,990 [AbstractBrokerPlugin] - Start plugin:jettyBroker successfully.
[INFO] [main] 06-27 12:12:33,088 [Server] -
Starting dashboard http server at port
[INFO] [main] 06-27 12:12:33,093 [Server] - jetty-7.6.1.v20120215
[INFO] [main] 06-27 12:12:33,098 [AbstractConnector] - Started SelectChannelConnector@0.0.0.0:8120
[INFO] [main] 06-27 12:12:33,098 [Server] - Started dashboard http server successfully.
metaq02(192.168.8.102)
metaq03(192.168.8.103)
只需修改配置文件中的hostName,brokerId及容器名(本实验叫metaq02,metaq03)
四.确认集群