1、centos

  1. vi Dockerfile
  2. #FROM geray/centos:v7.3.0
  3. FROM centos:7
  4. LABEL maintainer="Geray <1690014753@qq.com>" \
  5. image.authors="geray" \
  6. image.description="Application packaged by Geray" \
  7. image.ref.name="centos:7" \
  8. image.title="centos" \
  9. image.vendor="VMware, Inc." \
  10. build.date="2022.10.9"
  11. RUN set -x \
  12. yum -y install kde-l10n-Chinese telnet wget iproute net-tools && \
  13. yum -y reinstall glibc-common && \
  14. yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y && \
  15. yum clean all && \
  16. rm -rf /var/cache/yum/*
  17. localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \
  18. cat /dev/null > /etc/locale.conf && echo "LC_ALL=\"zh_CN.UTF-8\"" > /etc/locale.conf
  19. ENV TZ "Asia/Shanghai"
  20. ENV LANG en_US.UTF-8
  21. ENV LANG zh_CN.UTF-8
  22. echo "*" > .dockerignore

基础镜像 - 图1

  1. docker build -t geray/centos:test-1 .
  2. docker buildx build -t geray/centos:v7.3.0 --platform=linux/arm,linux/arm64,linux/amd64 --push .
  3. docker buildx build -t geray/centos:v7.3.0 --platform=linux/arm64 --load .
  4. docker buildx build -t geray/centos:v7.3.0 --platform=linux/arm,linux/arm64,linux/amd64 . --push --output type=image,name=docker.io:443,push=true

添加nginx相关依赖

  1. FROM geray/centos:v7.3.0
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="centos:7" \
  6. image.title="centos" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2022.10.9"
  9. RUN set -x \
  10. yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y

2、ubuntu

  • 拉取后外网环境可以使用apt-get
  • 安装有基础依赖包
  • 时区符合中国

https://blog.csdn.net/weixin_49700990/article/details/122005632

  1. cat > /etc/apt/sources.list <<EOF
  2. deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
  3. deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
  4. deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
  5. deb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
  6. deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
  7. deb-src https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
  8. # deb https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
  9. # deb-src https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
  10. deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  11. deb-src https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  12. EOF
  13. cat > /etc/resolv.conf <<EOF
  14. # Generated by NetworkManager
  15. nameserver 8.8.8.8
  16. nameserver 8.8.4.4
  17. EOF
  1. vi Dockerfile
  2. FROM geray/centos:v7.3.0
  3. LABEL maintainer="Geray <1690014753@qq.com>" \
  4. image.authors="geray" \
  5. image.description="Application packaged by Geray" \
  6. image.ref.name="centos:7" \
  7. image.title="centos" \
  8. image.vendor="VMware, Inc." \
  9. build.date="2022.10.9"
  10. RUN set -x \
  11. yum -y install kde-l10n-Chinese telnet wget iproute net-tools && \
  12. yum -y reinstall glibc-common && \
  13. yum clean all && \
  14. rm -rf /var/cache/yum/* && \
  15. localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \
  16. cat /dev/null > /etc/locale.conf && echo "LC_ALL=\"zh_CN.UTF-8\"" > /etc/locale.conf
  17. #env
  18. ENV TZ "Asia/Shanghai"
  19. #ENV LANG en_US.UTF-8
  20. ENV LANG zh_CN.UTF-8
  21. echo "*" > .dockerignore
  1. docker buildx build -t geray/ubuntu:18.04 --platform=linux/arm,linux/arm64,linux/amd64 --push .
  2. docker build -t geray/ubuntu:18.04 .

3、Nginx

1. Dockerfile

  1. FROM geray/centos:v7.2.0
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="geray/centos:v7.2.0" \
  6. image.title="nginx" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2022.10.9"
  9. RUN set -x \
  10. && groupadd --system --gid 101 nginx \
  11. && useradd --system --no-create-home -g 101 --shell /bin/false --uid 101 nginx
  12. ENV OPENSSL_VERSION 1.1.1q
  13. ENV PRCE_VERSION 8.45
  14. ENV ZLIB_VERSION 1.2.12
  15. ENV LIBFASTCOMMON_VERSION 1.0.53
  16. ENV FASTDFS_VERSION 6.07
  17. ENV FASTDFS_VERSION 6.07
  18. ENV fastdfs-nginx-module_version 1.22
  19. ENV NGINX_VERSION 1.22.0
  20. COPY 1.22.0/openssl-1.1.1q.tar.gz .
  21. COPY 1.22.0/pcre-8.45.tar.gz .
  22. COPY 1.22.0/zlib-1.2.12.tar.gz .
  23. COPY libfastcommon-1.0.53.tar.gz .
  24. COPY fastdfs-6.07.tar.gz .
  25. COPY fastdfs-nginx-module-1.22.tar.gz .
  26. COPY 1.22.0/nginx-1.22.0.tar.gz .
  27. RUN set -x \
  28. # openssl-1.1.1q.tar.gz
  29. && tar xf openssl-1.1.1q.tar.gz \
  30. && cd openssl-1.1.1q \
  31. && ./config \
  32. && make && make install \
  33. && cd .. \
  34. && rm -rf openssl-1.1.1q.tar.gz \
  35. # pcre-8.45.tar.gz
  36. && tar xf pcre-8.45.tar.gz \
  37. && cd pcre-8.45 \
  38. && ./configure \
  39. && make && make install \
  40. && cd .. \
  41. && rm -rf pcre-8.45.tar.gz \
  42. # zlib-1.2.12.tar.gz
  43. && tar xf zlib-1.2.12.tar.gz \
  44. && cd zlib-1.2.12 \
  45. && ./configure \
  46. && make && make install \
  47. && cd .. \
  48. && rm -rf zlib-1.2.12.tar.gz
  49. RUN set -x \
  50. # libfastcommon-1.0.53.tar.gz
  51. && tar xf libfastcommon-1.0.53.tar.gz \
  52. && cd libfastcommon-1.0.53 \
  53. && ./make.sh && ./make.sh install \
  54. && cd .. \
  55. && rm -rf libfastcommon-1.0.53.tar.gz \
  56. # fastdfs-6.07.tar.gz
  57. && tar xf fastdfs-6.07.tar.gz \
  58. && cd fastdfs-6.07 \
  59. && ./make.sh && ./make.sh install \
  60. && cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf \
  61. && cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf \
  62. && cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf \
  63. # && cp ./conf/tracker.conf /etc/fdfs/ \
  64. # && cp ./conf/storage.conf /etc/fdfs/ \
  65. && cp ./conf/http.conf /etc/fdfs/ \
  66. && cp ./conf/mime.types /etc/fdfs/ \
  67. && cd .. \
  68. && rm -rf fastdfs-6.07.tar.gz \
  69. # fastdfs-nginx-module-1.22.tar.gz
  70. && tar xf fastdfs-nginx-module-1.22.tar.gz \
  71. && cd fastdfs-nginx-module-1.22 \
  72. && cp src/mod_fastdfs.conf /etc/fdfs/ \
  73. # 修改mod_fastdfs.conf配置文件
  74. && sed -i 's/connect_timeout=2/connect_timeout=10/g' /etc/fdfs/mod_fastdfs.conf \
  75. && sed -i 's/tracker_server=tracker:22122/tracker_server=127.0.0.1:22122/g' /etc/fdfs/mod_fastdfs.conf \
  76. && sed -i 's/url_have_group_name = false/url_have_group_name = true/g' /etc/fdfs/mod_fastdfs.conf \
  77. # 修改src/config配置文件
  78. && sed -i 's/\/usr\/local\//\/usr\//g' src/config \
  79. # 创建配置中的默认路径
  80. && mkdir -p /home/yuqing/fastdfs \
  81. && cd .. \
  82. && rm -rf fastdfs-nginx-module-1.22.tar.gz
  83. RUN set -x \
  84. # nginx-1.22.0.tar.gz
  85. && tar xf nginx-1.22.0.tar.gz \
  86. # 启动服务
  87. && /etc/init.d/fdfs_trackerd start \
  88. && /etc/init.d/fdfs_storaged start \
  89. && cd nginx-1.22.0 \
  90. && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=../openssl-1.1.1q --with-pcre=../pcre-8.45 --with-zlib=../zlib-1.2.12 --add-module=../fastdfs-nginx-module-1.22/src \
  91. && make && make install \
  92. && cd .. \
  93. && rm -rf fastdfs-nginx-module-1.22.tar.gz \
  94. && sed -i "s/#user nobody;/user nginx;/g" /usr/local/nginx/conf/nginx.conf
  95. VOLUME /usr/local/nginx/conf
  96. VOLUME /usr/local/nginx/logs
  97. COPY start.sh /usr/local/nginx/sbin/
  98. RUN set -x \
  99. && rm -rf /home/yuqing/fastdfs/data/* \
  100. && rm -rf /home/yuqing/fastdfs/logs/*
  101. && chmod +x /usr/local/nginx/sbin/start.sh
  102. #&& chown -R 101:101 /usr/local/nginx
  103. WORKDIR /usr/local/nginx
  104. EXPOSE 80
  105. #USER nginx
  106. CMD ["/usr/local/nginx/sbin/start.sh"]

2. start.sh

  1. #!/bin/bash
  2. /etc/init.d/fdfs_trackerd start
  3. /etc/init.d/fdfs_storaged start
  4. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  5. while [[ true ]]; do
  6. sleep 1
  7. done

:::info

  • 不加循环会启动后退出

:::

3. 构建

  1. # 构建
  2. docker build -t geray/nginx:1.22.0-fastdfs.1 .
  3. # 提交容器为镜像
  4. docker commit -a "geray" -m "this is test" test geray/nginx:1.22.0-fastdfs-1
  5. # zk
  6. docker commit -a "geray" <镜像名称或ID> 10.223.216.37:5000/zookeeper:

4、zookeeper

  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8-jdk" \
  6. image.title="zookeeper" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2022.10.9"
  9. ENV ZK_VERSION 3.7.0
  10. #ENV SCALA_VERSION 2.13
  11. ENV JDK_VERSION 8
  12. COPY apache-zookeeper-3.7.0-bin.tar.gz .
  13. RUN set -x \
  14. && mkdir /opt/zookeeper \
  15. && tar xf apache-zookeeper-3.7.0-bin.tar.gz -C /opt/zookeeper --strip-components 1 \
  16. && cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg \
  17. && rm -rf apache-zookeeper-3.7.0-bin.tar.gz
  18. WORKDIR /opt/zookeeper/
  19. # data目录
  20. VOLUME /tmp/zookeeper
  21. VOLUME /opt/zookeeper/logs
  22. VOLUME /opt/zookeeper/conf
  23. COPY docker-entrypoint.sh /opt/zookeeper/
  24. RUN set -x \
  25. && chmod +x /opt/zookeeper/docker-entrypoint.sh
  26. EXPOSE 2181
  27. #USER nginx
  28. CMD ["/opt/zookeeper/docker-entrypoint.sh"]
  1. cat > docker-entrypoint.sh <<EOF
  2. #!/bin/sh
  3. /opt/zookeeper/bin/zkServer.sh start
  4. tail -f /opt/zookeeper/logs/zookeeper--server-*.out
  5. EOF
  1. docker build -t geray/zookeeper:3.7.0 .
  2. docker buildx build -t geray/zookeeper:3.7.0 --platform=linux/arm,linux/arm64,linux/amd64 --push .

5、kafka-3.0.0(内置zk)

1. 镜像构建

  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8-jdk" \
  6. image.title="kafka" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2022.10.9"
  9. ENV KAFKA_VERSION 3.0.0
  10. ENV SCALA_VERSION 2.13
  11. ENV JDK_VERSION 8
  12. COPY kafka_2.13-3.0.0.tgz .
  13. RUN set -x; \
  14. mkdir /opt/kafka; \
  15. tar xf kafka_2.13-3.0.0.tgz -C /opt/kafka --strip-components 1; \
  16. mkdir logs; \
  17. sed -i '/^#/d;/^$/d' /opt/kafka/config/server.properties; \
  18. echo "listeners=PLAINTEXT://localhost:9092" >> server.properties; \
  19. rm -rf kafka_2.13-3.0.0.tgz
  20. WORKDIR /opt/kafka/
  21. # data目录
  22. VOLUME /opt/kafka/data
  23. VOLUME /opt/kafka/logs
  24. VOLUME /opt/kafka/config
  25. COPY docker-entrypoint.sh /opt/kafka/
  26. RUN set -x \
  27. && chmod +x /opt/kafka/docker-entrypoint.sh
  28. EXPOSE 2181 9092
  29. #USER nginx
  30. CMD ["/opt/kafka/docker-entrypoint.sh"]
  1. cat > docker-entrypoint.sh <<EOF
  2. #!/bin/sh
  3. /opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
  4. /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
  5. tail -f /opt/kafka/logs/kafkaServer.out
  6. EOF
  1. docker buildx build -t geray/kafka:3.0.0-zk --platform=linux/arm64,linux/amd64 --push .
  1. FROM geray/kafka:3.0.0-zk
  2. COPY docker-entrypoint.sh /opt/kafka/
  3. RUN set -xe \
  4. chmod 777 /opt/kafka/docker-entrypoint.sh \
  5. chmod 777 /usr/bin/docker-entrypoint.sh
  6. EXPOSE 9092/tcp 2181/tcp
  7. CMD [ "sh", "-c", "/opt/kafka/docker-entrypoint.sh" ]
  1. docker buildx build -t geray/kafka:3.0.0-zk-x --platform=linux/arm64,linux/amd64 --push .

kafka_2.13-2.8.1(内置zk)

1. 配置文件

  1. $ sed -i '/^#/d;/^$/d' zookeeper.properties
  2. $ cat zookeeper.properties
  3. dataDir=/tmp/zookeeper
  4. clientPort=2181
  5. maxClientCnxns=0
  6. admin.enableServer=false
  7. $ sed -i '/^#/d;/^$/d' server.properties
  8. $ cat server.properties
  9. broker.id=1
  10. num.network.threads=3
  11. num.io.threads=8
  12. socket.send.buffer.bytes=102400
  13. socket.receive.buffer.bytes=102400
  14. socket.request.max.bytes=419430400
  15. log.dirs=/tmp/kafka-logs
  16. num.partitions=1
  17. num.recovery.threads.per.data.dir=1
  18. offsets.topic.replication.factor=1
  19. transaction.state.log.replication.factor=1
  20. transaction.state.log.min.isr=1
  21. log.retention.hours=168
  22. log.segment.bytes=1073741824
  23. log.retention.check.interval.ms=300000
  24. zookeeper.connect=127.0.0.1:2181
  25. zookeeper.connection.timeout.ms=18000
  26. group.initial.rebalance.delay.ms=0
  27. # kafka和zk公用同一个认证
  28. $cat kafka_server_jaas.conf
  29. KafkaServer {
  30. org.apache.kafka.common.security.plain.PlainLoginModule required
  31. username="admin"
  32. password="zfyx@2022"
  33. user_admin="zfyx@2022"
  34. user_producer="zfyx@2022"
  35. user_consumer="zfyx@2022";
  36. };
  37. $ grep kafka_server_jaas zookeeper-server-start-sasl.sh
  38. export KAFKA_HEAP_OPTS="-Xmx512M -Xms512M -Djava.security.auth.login.config=${KAFKA_HOME}/config/kafka_server_jaas.conf"
  39. $ grep kafka_server_jaas kafka-server-start-sasl.sh
  40. export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=${KAFKA_HOME}/config/kafka_server_jaas.conf"

2. Dockerfile

  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="镜像包构建来自Geray,该镜像内置了zookeeper,具备SASL/PLAIN和不添加认证两种启动方式,使用SASL=true/false环境变量进行控制。也可以使用命令参数替换原有命令以此来部署单个zk或者kafka服务:例如${KAFKA_HOME}/bin/zookeeper-server-start-sasl.sh ${KAFKA_HOME}/config/zookeeper.properties或者${KAFKA_HOME}/bin/kafka-server-start-sasl.sh ${KAFKA_HOME}/config/server.properties等" \
  5. image.ref.name="openjdk:8-jdk" \
  6. image.title="kafka" \
  7. image.version="2.13-2.8.1" \
  8. image.vendor="VMware, Inc." \
  9. build.date="2022.11.16"
  10. ENV KAFKA_VERSION 2.13-2.8.1
  11. ENV JDK_VERSION 8
  12. ENV SASL=false
  13. ADD kafka_${KAFKA_VERSION}.tar.gz /opt/
  14. RUN set -x ; \
  15. #tar xf /opt/kafka_${KAFKA_VERSION}.tar.gz -C /opt/kafka --strip-components 1 ; \
  16. tar xf /opt/kafka_${KAFKA_VERSION}.tar.gz ; \
  17. mv /opt/kafka_${KAFKA_VERSION} /opt/kafka ; \
  18. mkdir /opt/kafka/logs ; \
  19. rm -rf /opt/kafka_${KAFKA_VERSION}.tar.gz
  20. WORKDIR /opt/kafka/
  21. # data目录
  22. VOLUME /opt/kafka/zkData
  23. VOLUME /opt/kafka/kafkaData
  24. VOLUME /opt/kafka/logs
  25. VOLUME /opt/kafka/config
  26. ENV KAFKA_HOME=/opt/kafka
  27. COPY docker-entrypoint.sh /usr/local/bin/
  28. RUN set -x \
  29. && chmod +x /usr/local/bin/docker-entrypoint.sh
  30. EXPOSE 2181 9092
  31. #USER nginx
  32. CMD ["/usr/local/bin/docker-entrypoint.sh"]

3. docker-entrypoint.sh

  1. #!/bin/sh -x
  2. # 控制kafka进程是否启动成功
  3. #status=false
  4. # 判断SASL是true还是false,如果是true则走认证,否则不走认证脚本
  5. # 不添加认证启动
  6. if [ $SASL ];then
  7. #echo "if $SASL"
  8. # 记录SASL的开关
  9. echo "SASL=$SASL" > ${KAFKA_HOME}/sasl.txt
  10. ${KAFKA_HOME}/bin/zookeeper-server-start-sasl.sh -daemon ${KAFKA_HOME}/config/zookeeper.properties
  11. # 判断zk是否启动成功
  12. sleep 10s
  13. jps | grep QuorumPeerMain;
  14. if [ $? ];then
  15. ${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties
  16. # 判断是否启动成功
  17. #if [ $? ];then
  18. # status=true
  19. #fi
  20. fi
  21. # 添加认证启动
  22. else
  23. #echo "else $SASL"
  24. echo "SASL=$SASL" > ${KAFKA_HOME}/sasl.txt
  25. ${KAFKA_HOME}/bin/zookeeper-server-start.sh -daemon ${KAFKA_HOME}/config/zookeeper.properties
  26. # 判断zk是否启动成功
  27. sleep 10s
  28. jps | grep QuorumPeerMain;
  29. if [ $? ];then
  30. ${KAFKA_HOME}/bin/kafka-server-start-sasl.sh -daemon ${KAFKA_HOME}/config/server.properties
  31. # 判断是否启动成功
  32. # 判断是否启动成功
  33. #if [ $? ];then
  34. # status=true
  35. #fi
  36. fi
  37. fi
  38. # kafka是否启动成功
  39. #sleep 30s;
  40. #jps | grep Kafka;
  41. #if [ $? ];then
  42. # echo "=========================================" >> ${KAFKA_HOME}/logs/server.log
  43. # echo "\n kafka启动成功! 是否使用SASL认证:$SASL \n" >> ${KAFKA_HOME}/logs/server.log
  44. # echo "=========================================" >> ${KAFKA_HOME}/logs/server.log
  45. #else
  46. # echo "=========================================" >> ${KAFKA_HOME}/logs/server.log
  47. # echo "\n kafka启动失败! 是否使用SASL认证:$SASL \n" >> ${KAFKA_HOME}/logs/server.log
  48. # echo "=========================================" >> ${KAFKA_HOME}/logs/server.log
  49. # # 删除所有进程
  50. # for i in $(jps | grep -v Jps | awk '{print $1}'); do kill -9 $i; done
  51. #fi
  52. tail -200f ${KAFKA_HOME}/logs/server.log

3. 测试

  1. # 创建topic
  2. bin/kafka-topics.sh --create --topic test1 --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
  3. # 查看topic
  4. bin/kafka-topics.sh --list --bootstrap-server localhost:9092
  5. # 删除topic
  6. bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic name
  7. # 生产消息
  8. bin/kafka-console-producer.sh --topic test1 --bootstrap-server localhost:9092
  9. # 消费消息
  10. bin/kafka-console-consumer.sh --topic test1 --from-beginning --bootstrap-server localhost:9092

kafka

  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8-jdk" \
  6. image.title="kafka" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2022.10.9"
  9. ENV KAFKA_VERSION 3.0.0
  10. ENV SCALA_VERSION 2.13
  11. ENV JDK_VERSION 8
  12. COPY kafka_2.13-3.0.0.tgz .
  13. RUN set -x \
  14. && mkdir /opt/kafka \
  15. && tar xf kafka_2.13-3.0.0.tgz -C /opt/kafka --strip-components 1 \
  16. && cp /opt/kafka/conf/zoo_sample.cfg /opt/kafka/conf/zoo.cfg \
  17. && rm -rf kafka_2.13-3.0.0.tgz
  18. WORKDIR /opt/kafka/
  19. # data目录
  20. VOLUME /opt/kafka/data
  21. VOLUME /opt/kafka/logs
  22. VOLUME /opt/kafka/config
  23. COPY docker-entrypoint.sh /opt/kafka/
  24. RUN set -x \
  25. && chmod +x /opt/kafka/docker-entrypoint.sh
  26. EXPOSE 9092
  27. #USER nginx
  28. CMD ["/opt/kafka/docker-entrypoint.sh"]
  1. cat > docker-entrypoint.sh <<EOF
  2. #!/bin/sh
  3. /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
  4. tail -f /opt/kafka/logs/kafkaServer.out
  5. EOF
  1. cat > server-1.properties <<EOF
  2. broker.id=0
  3. num.network.threads=3
  4. num.io.threads=8
  5. socket.send.buffer.bytes=102400
  6. socket.receive.buffer.bytes=102400
  7. socket.request.max.bytes=104857600
  8. log.dirs=/opt/kafka/logs/kafka-logs
  9. num.partitions=1
  10. num.recovery.threads.per.data.dir=1
  11. offsets.topic.replication.factor=1
  12. transaction.state.log.replication.factor=1
  13. transaction.state.log.min.isr=1
  14. log.retention.hours=168
  15. log.segment.bytes=1073741824
  16. log.retention.check.interval.ms=300000
  17. ############################# Zookeeper #############################
  18. zookeeper.connect=localhost:2181
  19. zookeeper.connection.timeout.ms=18000
  20. ############################# Group Coordinator Settings #############################
  21. group.initial.rebalance.delay.ms=0
  22. EOF
  23. #=====================================
  24. cat > zookeeper-1.properties <<EOF
  25. dataDir=/opt/kafka/data/zookeeper
  26. clientPort=2181
  27. maxClientCnxns=0
  28. admin.enableServer=false
  29. # admin.serverPort=8080
  30. EOF

构建

  1. docker buildx build -t geray/kafka:3.2.1 .
  2. docker buildx build -t geray/kafka:3.2.1 --platform=linux/arm,linux/arm64,linux/amd64 --push .

kafka-schema-registry(confluent-community-7.1.1-arm64)

  • Dockerfile
  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8-jdk" \
  6. image.title="kafka" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2022.11.10"
  9. ENV schema-registry 7.1.1
  10. ENV JDK_VERSION 8
  11. ADD confluent-community-7.1.1.tar.gz /opt/
  12. RUN set -x ; \
  13. mv /opt/confluent-7.1.1 /opt/confluent
  14. WORKDIR /opt/confluent/
  15. # data目录
  16. VOLUME /opt/confluent/etc/schema-registry/
  17. #COPY docker-entrypoint.sh /opt/kafka/
  18. #RUN set -x \
  19. # && chmod +x /opt/kafka/docker-entrypoint.sh
  20. EXPOSE 8081
  21. #USER nginx
  22. #CMD ["/opt/kafka/docker-entrypoint.sh"]
  23. CMD ["/opt/confluent/bin/schema-registry-start", "/opt/confluent/etc/schema-registry/schema-registry.properties"]

zookeeper和kafka(confluent-community-7.1.1-arm64)

  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8-jdk" \
  6. image.title="zookeeper" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2022.11.18"
  9. #ENV ZK_VERSION 7.1.1
  10. #ENV SCALA_VERSION 2.13
  11. ENV JDK_VERSION 8
  12. ENV confluent-community=7.1.1
  13. ADD confluent-community-7.1.1.tar.gz /
  14. WORKDIR /confluent-7.1.1
  15. # data目录
  16. #VOLUME /tmp/zookeeper
  17. #VOLUME /opt/zookeeper/logs
  18. #VOLUME /opt/zookeeper/conf
  19. EXPOSE 8081
  20. #ENTRYPOINT ["/confluent-7.1.1/bin/zookeeper-server-start"]
  21. #CMD ["/confluent-7.1.1/bin/zookeeper-server-start", "/confluent-7.1.1/etc/kafka/zookeeper.properties"]
  22. #CMD ["/confluent-7.1.1/etc/kafka/zookeeper.properties"]
  23. # zk配置
  24. #ENTRYPOINT ["/confluent-7.1.1/bin/zookeeper-server-start"]
  25. #CMD ["/confluent-7.1.1/etc/kafka/zookeeper.properties"]
  26. # kafka配置
  27. #ENTRYPOINT ["/confluent-7.1.1/bin/kafka-server-start"]
  28. #CMD ["/confluent-7.1.1/etc/kafka/server.properties"]
  29. #
  30. # schema-registry配置
  31. ENTRYPOINT ["/confluent-7.1.1/bin/schema-registry-start"]
  32. CMD ["/confluent-7.1.1/etc/schema-registry/schema-registry.properties"]

zk

  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8" \
  6. image.title="zookeeper" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2023.1.10"
  9. ENV JDK_VERSION 8
  10. ENV confluent-community=7.1.1
  11. ADD confluent-community-7.1.1.tar.gz /
  12. WORKDIR /confluent-7.1.1
  13. VOLUME /tmp/zookeeper
  14. EXPOSE 2181
  15. # zk配置
  16. ENTRYPOINT ["/confluent-7.1.1/bin/zookeeper-server-start"]
  17. CMD ["/confluent-7.1.1/etc/kafka/zookeeper.properties"]

kafka

  1. FROM openjdk:8
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8" \
  6. image.title="kafka" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2023.1.10"
  9. ENV JDK_VERSION 8
  10. ENV confluent-community=7.1.1
  11. ADD confluent-community-7.1.1.tar.gz /
  12. WORKDIR /confluent-7.1.1
  13. # data目录
  14. VOLUME /tmp/kafka-logs
  15. EXPOSE 9092
  16. # kafka配置
  17. ENTRYPOINT ["/confluent-7.1.1/bin/kafka-server-start"]
  18. CMD ["/confluent-7.1.1/etc/kafka/server.properties"]

registry

  1. FROM openjdk:8
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8" \
  6. image.title="kafka" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2023.1.10"
  9. ENV JDK_VERSION 8
  10. ENV confluent-community=7.1.1
  11. ADD confluent-community-7.1.1.tar.gz /
  12. WORKDIR /confluent-7.1.1
  13. EXPOSE 8081
  14. # kafka配置
  15. ENTRYPOINT ["/confluent-7.1.1/bin/schema-registry-start"]
  16. CMD ["/confluent-7.1.1/etc/schema-registry/schema-registry.properties"]
  • 构建
  1. docker build -t geray/zookeeper:confluent-community-7.1.1-amd64 .
  2. docker build -t geray/kafka:confluent-community-7.1.1-amd64 .
  3. docker build -t geray/kafka-schema-registry:confluent-community-7.1.1-amd64 .

5、ActiveMQ

  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>" \
  3. image.authors="geray" \
  4. image.description="Application packaged by Geray" \
  5. image.ref.name="openjdk:8-jdk" \
  6. image.title="activemq" \
  7. image.vendor="VMware, Inc." \
  8. build.date="2022.10.9"
  9. ENV activemq_version 5.11.3
  10. # export activemq_version=5.11.3
  11. #ENV JDK_VERSION 8
  12. COPY apache-activemq-${activemq_version}-bin.tar.gz .
  13. RUN set -x \
  14. && mkdir /opt/activemq \
  15. && tar xf apache-activemq-${activemq_version}-bin.tar.gz -C /opt/activemq --strip-components 1 \
  16. && rm -rf apache-activemq-${activemq_version}-bin.tar.gz
  17. WORKDIR /opt/activemq/
  18. # data目录
  19. VOLUME /opt/activemq/data
  20. VOLUME /opt/activemq/conf
  21. COPY docker-entrypoint.sh /opt/activemq/
  22. RUN set -x \
  23. && chmod +x /opt/activemq/docker-entrypoint.sh
  24. EXPOSE 1883 8161 5672 61613 37229 61614 61616
  25. CMD ["/opt/activemq/docker-entrypoint.sh"]
  1. cat > docker-entrypoint.sh <<EOF
  2. #!/bin/sh
  3. /opt/activemq/bin/activemq start
  4. tail -f /opt/activemq/data/activemq.log
  5. EOF
  1. docker build -t geray/activemq:5.11.3 .
  2. docker buildx build -t geray/activemq:5.11.3 --platform=linux/arm,linux/arm64,linux/amd64 --push .

6、RocketMQ

  1. FROM openjdk:8-jdk
  2. LABEL maintainer="Geray <1690014753@qq.com>"
  3. ENV rocketmq_version 4.7.1
  4. # export rocketmq_version=4.7.1
  5. #ENV JDK_VERSION 8
  6. ENV app_name rocketmq
  7. #export RS_JAVA_OPT="-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  8. #export RB_JAVA_OPT="-Xms8g -Xmx8g -Xmn4g"
  9. ENV RS_JAVA_OPT "-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
  10. ENV RB_JAVA_OPT "-Xms8g -Xmx8g -Xmn4g"
  11. COPY rocketmq-all-${rocketmq_version}-bin-release.zip .
  12. RUN set -x \
  13. && unzip rocketmq-all-${rocketmq_version}-bin-release.zip \
  14. && mv rocketmq-all-${rocketmq_version}-bin-release rocketmq \
  15. && mv rocketmq /opt/ \
  16. && mkdir /opt/rocketmq/logs \
  17. && echo "namesrvAddr=localhost:9876" >> /opt/rocketmq/conf/broker.conf \
  18. && echo "brokerIP1=localhost" >> /opt/rocketmq/conf/broker.conf \
  19. && echo "listenPort==10911" >> /opt/rocketmq/conf/broker.conf \
  20. && echo "listenPort=9876" >> /opt/rocketmq/conf/namesrv.properties \
  21. # 设置环境变量
  22. && sed -i 's/^[^#].*Xms4g*/#&/g' /opt/rocketmq/bin/runserver.sh \
  23. && sed -i '/Xms4g/a\JAVA_OPT="${JAVA_OPT} -server ${RS_JAVA_OPT}"' /opt/rocketmq/bin/runserver.sh \
  24. && sed -i 's/^[^#].*Xms*/#&/g' /opt/rocketmq/bin/runbroker.sh \
  25. && sed -i '/Xms/a\JAVA_OPT="${JAVA_OPT} -server ${RB_JAVA_OPT}"' /opt/rocketmq/bin/runbroker.sh \
  26. && rm -rf rocketmq-all-${rocketmq_version}-bin-release.zip
  27. WORKDIR /opt/rocketmq/
  28. # data目录
  29. #VOLUME /opt/rocketmq/data
  30. VOLUME /opt/rocketmq/conf
  31. COPY docker-entrypoint.sh /opt/rocketmq/
  32. RUN set -x \
  33. && chmod +x /opt/rocketmq/docker-entrypoint.sh
  34. EXPOSE 9876 10911 10909 10912
  35. CMD ["/opt/rocketmq/docker-entrypoint.sh"]

:::info

注释掉包含Xms4g内容的行

sed -i ‘s/^[^#].Xms4g/#&/g’ /opt/rocketmq/bin/runserver.sh

sed -i ‘s/^[^#].Xms4g/#&/g’ runserver.sh

在包含行后添加一行(前一行添加:i)

sed -i ‘/Xms4g/a\JAVA_OPT=”${JAVA_OPT} ${RS_JAVA_OPT}”‘ runserver.sh

:::

  1. cat > docker-entrypoint.sh <<EOF
  2. #!/bin/sh
  3. # export JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
  4. #export JAVA_OPT="${JAVA_OPT} -server ${Xms} ${Xmx} ${Xmn}"
  5. nohup /opt/rocketmq/bin/mqnamesrv > /opt/rocketmq/logs/mqnamesrv.log 2>&1 &
  6. #tail -f ~/logs/rocketmqlogs/namesrv.log
  7. nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/broker.conf > /opt/rocketmq/logs/mqbroker.log 2>&1 &
  8. tail -f /opt/rocketmq/logs/mqbroker.log
  9. EOF
  1. docker build -t geray/rocketmq:4.7.1 .
  2. docker buildx build -t geray/rocketmq:4.7.1 --platform=linux/arm,linux/arm64,linux/amd64 --push .

配置文件:

  1. brokerClusterName = DefaultCluster
  2. brokerName = broker-a
  3. brokerId = 0
  4. deleteWhen = 04
  5. fileReservedTime = 48
  6. brokerRole = ASYNC_MASTER
  7. flushDiskType = ASYNC_FLUSH
  8. namesrvAddr=rocketmq-svc.mssq-fwrhxt:9876
  9. brokerIP1=rocketmq-svc.mssq-fwrhxt
  10. listenPort=10911

7、nacos

2.1.0

  1. FROM openjdk:8-jdk
  2. LABEL image.authors="geray" \
  3. image.description="Application packaged by Geray" \
  4. image.ref.name="openjdk-8" \
  5. image.title="nacos" \
  6. image.vendor="VMware, Inc." \
  7. build.date="2022.11.9"
  8. ADD nacos-server-2.1.0.tar.gz /opt/
  9. ENV MODE=standalone
  10. COPY docker-entrypoint.sh /opt/nacos/
  11. RUN set -x \
  12. && chmod +x /opt/nacos/docker-entrypoint.sh
  13. WORKDIR /opt/nacos/
  14. VOLUME /opt/nacos/data
  15. VOLUME /opt/nacos/logs
  16. EXPOSE 8848
  17. CMD ["/opt/nacos/docker-entrypoint.sh"]
  • 构建
  1. cat docker-entrypoint.sh
  2. #!/bin/sh
  3. if [ $MODE ];then
  4. /opt/nacos/bin/startup.sh -m $MODE
  5. else
  6. /opt/nacos/bin/startup.sh
  7. fi
  8. tail -f /opt/nacos/logs/start.out
  • 构建
  1. docker build -t geray/nacos:2.1.0 .

2.0.3

  1. FROM openjdk:8-jdk
  2. LABEL image.authors="geray" \
  3. image.description="Application packaged by Geray" \
  4. image.ref.name="openjdk-8" \
  5. image.title="nacos" \
  6. image.vendor="VMware, Inc." \
  7. build.date="2022.10.6"
  8. ADD nacos-server-2.0.3.tar.gz /opt/
  9. ENV MODE standalone
  10. COPY docker-entrypoint.sh /opt/nacos/
  11. RUN set -x \
  12. && chmod +x /opt/nacos/docker-entrypoint.sh
  13. WORKDIR /opt/nacos/
  14. VOLUME /opt/nacos/data
  15. VOLUME /opt/nacos/logs
  16. EXPOSE 8848
  17. CMD ["/opt/nacos/docker-entrypoint.sh"]
  1. cat docker-entrypoint.sh
  2. #!/bin/sh
  3. if [ $MODE ];then
  4. /opt/nacos/bin/startup.sh -m $MODE
  5. else
  6. /opt/nacos/bin/startup.sh
  7. fi
  8. tail -f /opt/nacos/logs/start.out

构建

  1. docker build -t geray/nacos:2.0.3 .

1.3.0

  1. FROM geray/hs_jdk:v1.8.0_291
  2. LABEL image.authors="geray" \
  3. image.description="Application packaged by Geray" \
  4. image.ref.name="openjdk-8" \
  5. image.title="nacos" \
  6. image.vendor="VMware, Inc." \
  7. build.date="2022.10.19"
  8. ADD nacos-server-1.3.0.tar.gz /opt/
  9. ENV MODE standalone
  10. COPY docker-entrypoint.sh /opt/nacos/
  11. RUN set -x \
  12. && chmod +x /opt/nacos/docker-entrypoint.sh
  13. WORKDIR /opt/nacos/
  14. VOLUME /opt/nacos/data
  15. VOLUME /opt/nacos/logs
  16. EXPOSE 8848
  17. CMD ["/opt/nacos/docker-entrypoint.sh"]
  1. docker build -t geray/nacos:1.3.0 .

配置用户

  1. # 创建用户
  2. CREATE USER 'nacos'@'%' IDENTIFIED BY 'Dgms@2022';
  3. # 将数据库nacos所有表授权给 nacos@localhost
  4. GRANT ALL PRIVILEGES ON nacos_ks.* TO 'nacos'@'%';
  5. flush privileges;
  6. # 删除用户
  7. DROP USER IF EXISTS 'nacos'@'%';
  8. # 查看权限
  9. SHOW GRANTS FOR 'nacos'@'%';

8、minio

  1. FROM geray/alpine:3.16.2
  2. LABEL image.authors="geray" \
  3. image.description="Application packaged by Geray" \
  4. image.ref.name="alpine" \
  5. image.title="minio" \
  6. image.vendor="VMware, Inc." \
  7. build.date="2022.10.6"
  8. #ENV MINIO_ACCESS_KEY minioadmin
  9. #ENV MINIO_SECRET_KEY minioadmin
  10. ENV MINIO_ROOT_USER minioadmin
  11. ENV MINIO_ROOT_PASSWORD minioadmin
  12. COPY minio /usr/local/bin/
  13. RUN set -x; \
  14. chmod +x /usr/local/bin/minio; \
  15. mkdir /data/
  16. VOLUME /data/
  17. EXPOSE 9000 9001
  18. #ENTRYPOINT ["minio"]
  19. CMD ["minio", "server", "/data", "--console-address", ":9001"]
  1. docker build -t geray/minio:RELEASE.2022-10-05T14-58-27Z-amd .
  2. # docker buildx build -t geray/minio:RELEASE.2022-10-05T14-58-27Z --platform=linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/386,linux/arm64,linux/ppc64le --push .
  • minio时编译好的二进制文件,交叉编译需要自己构建minio二进制文件
  1. docker run -d --name minio --rm -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=admin123456 -p 9000:9000 -p 9001:9001 geray/minio:RELEASE.2022-10-05T14-58-27Z

python基础镜像

  • 中文
  • pip安装依赖等
  1. cat Dockerfile
  2. FROM python:latest
  3. RUN set -ex && \
  4. apt-get update && \
  5. apt-get install -y locales-all fonts-wqy-microhei fonts-wqy-zenhei xfonts-wqy && \
  6. apt-get install vim -y && \
  7. apt-get install vim-tiny vim-common -y && \
  8. pip install pyinstaller && \
  9. pip install pymysql
  10. # 设置环境变量以使用UTF-8编码和中文Locale
  11. ENV LANG=zh_CN.UTF-8
  12. ENV LANGUAGE=zh_CN.UTF-8
  13. ENV LC_ALL=zh_CN.UTF-8