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

docker build -t geray/centos:test-1 .docker buildx build -t geray/centos:v7.3.0 --platform=linux/arm,linux/arm64,linux/amd64 --push .docker buildx build -t geray/centos:v7.3.0 --platform=linux/arm64 --load .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相关依赖
FROM geray/centos:v7.3.0LABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="centos:7" \image.title="centos" \image.vendor="VMware, Inc." \build.date="2022.10.9"RUN set -x \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
cat > /etc/apt/sources.list <<EOFdeb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse# deb https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse# deb-src https://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverseEOFcat > /etc/resolv.conf <<EOF# Generated by NetworkManagernameserver 8.8.8.8nameserver 8.8.4.4EOF
vi DockerfileFROM geray/centos:v7.3.0LABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="centos:7" \image.title="centos" \image.vendor="VMware, Inc." \build.date="2022.10.9"RUN set -x \yum -y install kde-l10n-Chinese telnet wget iproute net-tools && \yum -y reinstall glibc-common && \yum clean all && \rm -rf /var/cache/yum/* && \localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \cat /dev/null > /etc/locale.conf && echo "LC_ALL=\"zh_CN.UTF-8\"" > /etc/locale.conf#envENV TZ "Asia/Shanghai"#ENV LANG en_US.UTF-8ENV LANG zh_CN.UTF-8echo "*" > .dockerignore
docker buildx build -t geray/ubuntu:18.04 --platform=linux/arm,linux/arm64,linux/amd64 --push .docker build -t geray/ubuntu:18.04 .
3、Nginx
1. Dockerfile
FROM geray/centos:v7.2.0LABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="geray/centos:v7.2.0" \image.title="nginx" \image.vendor="VMware, Inc." \build.date="2022.10.9"RUN set -x \&& groupadd --system --gid 101 nginx \&& useradd --system --no-create-home -g 101 --shell /bin/false --uid 101 nginxENV OPENSSL_VERSION 1.1.1qENV PRCE_VERSION 8.45ENV ZLIB_VERSION 1.2.12ENV LIBFASTCOMMON_VERSION 1.0.53ENV FASTDFS_VERSION 6.07ENV FASTDFS_VERSION 6.07ENV fastdfs-nginx-module_version 1.22ENV NGINX_VERSION 1.22.0COPY 1.22.0/openssl-1.1.1q.tar.gz .COPY 1.22.0/pcre-8.45.tar.gz .COPY 1.22.0/zlib-1.2.12.tar.gz .COPY libfastcommon-1.0.53.tar.gz .COPY fastdfs-6.07.tar.gz .COPY fastdfs-nginx-module-1.22.tar.gz .COPY 1.22.0/nginx-1.22.0.tar.gz .RUN set -x \# openssl-1.1.1q.tar.gz&& tar xf openssl-1.1.1q.tar.gz \&& cd openssl-1.1.1q \&& ./config \&& make && make install \&& cd .. \&& rm -rf openssl-1.1.1q.tar.gz \# pcre-8.45.tar.gz&& tar xf pcre-8.45.tar.gz \&& cd pcre-8.45 \&& ./configure \&& make && make install \&& cd .. \&& rm -rf pcre-8.45.tar.gz \# zlib-1.2.12.tar.gz&& tar xf zlib-1.2.12.tar.gz \&& cd zlib-1.2.12 \&& ./configure \&& make && make install \&& cd .. \&& rm -rf zlib-1.2.12.tar.gzRUN set -x \# libfastcommon-1.0.53.tar.gz&& tar xf libfastcommon-1.0.53.tar.gz \&& cd libfastcommon-1.0.53 \&& ./make.sh && ./make.sh install \&& cd .. \&& rm -rf libfastcommon-1.0.53.tar.gz \# fastdfs-6.07.tar.gz&& tar xf fastdfs-6.07.tar.gz \&& cd fastdfs-6.07 \&& ./make.sh && ./make.sh install \&& cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf \&& cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf \&& cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf \# && cp ./conf/tracker.conf /etc/fdfs/ \# && cp ./conf/storage.conf /etc/fdfs/ \&& cp ./conf/http.conf /etc/fdfs/ \&& cp ./conf/mime.types /etc/fdfs/ \&& cd .. \&& rm -rf fastdfs-6.07.tar.gz \# fastdfs-nginx-module-1.22.tar.gz&& tar xf fastdfs-nginx-module-1.22.tar.gz \&& cd fastdfs-nginx-module-1.22 \&& cp src/mod_fastdfs.conf /etc/fdfs/ \# 修改mod_fastdfs.conf配置文件&& sed -i 's/connect_timeout=2/connect_timeout=10/g' /etc/fdfs/mod_fastdfs.conf \&& sed -i 's/tracker_server=tracker:22122/tracker_server=127.0.0.1:22122/g' /etc/fdfs/mod_fastdfs.conf \&& sed -i 's/url_have_group_name = false/url_have_group_name = true/g' /etc/fdfs/mod_fastdfs.conf \# 修改src/config配置文件&& sed -i 's/\/usr\/local\//\/usr\//g' src/config \# 创建配置中的默认路径&& mkdir -p /home/yuqing/fastdfs \&& cd .. \&& rm -rf fastdfs-nginx-module-1.22.tar.gzRUN set -x \# nginx-1.22.0.tar.gz&& tar xf nginx-1.22.0.tar.gz \# 启动服务&& /etc/init.d/fdfs_trackerd start \&& /etc/init.d/fdfs_storaged start \&& cd nginx-1.22.0 \&& ./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 \&& make && make install \&& cd .. \&& rm -rf fastdfs-nginx-module-1.22.tar.gz \&& sed -i "s/#user nobody;/user nginx;/g" /usr/local/nginx/conf/nginx.confVOLUME /usr/local/nginx/confVOLUME /usr/local/nginx/logsCOPY start.sh /usr/local/nginx/sbin/RUN set -x \&& rm -rf /home/yuqing/fastdfs/data/* \&& rm -rf /home/yuqing/fastdfs/logs/*&& chmod +x /usr/local/nginx/sbin/start.sh#&& chown -R 101:101 /usr/local/nginxWORKDIR /usr/local/nginxEXPOSE 80#USER nginxCMD ["/usr/local/nginx/sbin/start.sh"]
2. start.sh
#!/bin/bash/etc/init.d/fdfs_trackerd start/etc/init.d/fdfs_storaged start/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confwhile [[ true ]]; dosleep 1done
:::info
- 不加循环会启动后退出
:::
3. 构建
# 构建docker build -t geray/nginx:1.22.0-fastdfs.1 .# 提交容器为镜像docker commit -a "geray" -m "this is test" test geray/nginx:1.22.0-fastdfs-1# zkdocker commit -a "geray" <镜像名称或ID> 10.223.216.37:5000/zookeeper:
4、zookeeper
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8-jdk" \image.title="zookeeper" \image.vendor="VMware, Inc." \build.date="2022.10.9"ENV ZK_VERSION 3.7.0#ENV SCALA_VERSION 2.13ENV JDK_VERSION 8COPY apache-zookeeper-3.7.0-bin.tar.gz .RUN set -x \&& mkdir /opt/zookeeper \&& tar xf apache-zookeeper-3.7.0-bin.tar.gz -C /opt/zookeeper --strip-components 1 \&& cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg \&& rm -rf apache-zookeeper-3.7.0-bin.tar.gzWORKDIR /opt/zookeeper/# data目录VOLUME /tmp/zookeeperVOLUME /opt/zookeeper/logsVOLUME /opt/zookeeper/confCOPY docker-entrypoint.sh /opt/zookeeper/RUN set -x \&& chmod +x /opt/zookeeper/docker-entrypoint.shEXPOSE 2181#USER nginxCMD ["/opt/zookeeper/docker-entrypoint.sh"]
cat > docker-entrypoint.sh <<EOF#!/bin/sh/opt/zookeeper/bin/zkServer.sh starttail -f /opt/zookeeper/logs/zookeeper--server-*.outEOF
docker build -t geray/zookeeper:3.7.0 .docker buildx build -t geray/zookeeper:3.7.0 --platform=linux/arm,linux/arm64,linux/amd64 --push .
5、kafka-3.0.0(内置zk)
1. 镜像构建
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8-jdk" \image.title="kafka" \image.vendor="VMware, Inc." \build.date="2022.10.9"ENV KAFKA_VERSION 3.0.0ENV SCALA_VERSION 2.13ENV JDK_VERSION 8COPY kafka_2.13-3.0.0.tgz .RUN set -x; \mkdir /opt/kafka; \tar xf kafka_2.13-3.0.0.tgz -C /opt/kafka --strip-components 1; \mkdir logs; \sed -i '/^#/d;/^$/d' /opt/kafka/config/server.properties; \echo "listeners=PLAINTEXT://localhost:9092" >> server.properties; \rm -rf kafka_2.13-3.0.0.tgzWORKDIR /opt/kafka/# data目录VOLUME /opt/kafka/dataVOLUME /opt/kafka/logsVOLUME /opt/kafka/configCOPY docker-entrypoint.sh /opt/kafka/RUN set -x \&& chmod +x /opt/kafka/docker-entrypoint.shEXPOSE 2181 9092#USER nginxCMD ["/opt/kafka/docker-entrypoint.sh"]
cat > docker-entrypoint.sh <<EOF#!/bin/sh/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.propertiestail -f /opt/kafka/logs/kafkaServer.outEOF
docker buildx build -t geray/kafka:3.0.0-zk --platform=linux/arm64,linux/amd64 --push .
FROM geray/kafka:3.0.0-zkCOPY docker-entrypoint.sh /opt/kafka/RUN set -xe \chmod 777 /opt/kafka/docker-entrypoint.sh \chmod 777 /usr/bin/docker-entrypoint.shEXPOSE 9092/tcp 2181/tcpCMD [ "sh", "-c", "/opt/kafka/docker-entrypoint.sh" ]
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. 配置文件
$ sed -i '/^#/d;/^$/d' zookeeper.properties$ cat zookeeper.propertiesdataDir=/tmp/zookeeperclientPort=2181maxClientCnxns=0admin.enableServer=false$ sed -i '/^#/d;/^$/d' server.properties$ cat server.propertiesbroker.id=1num.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=419430400log.dirs=/tmp/kafka-logsnum.partitions=1num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1log.retention.hours=168log.segment.bytes=1073741824log.retention.check.interval.ms=300000zookeeper.connect=127.0.0.1:2181zookeeper.connection.timeout.ms=18000group.initial.rebalance.delay.ms=0# kafka和zk公用同一个认证$cat kafka_server_jaas.confKafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="zfyx@2022"user_admin="zfyx@2022"user_producer="zfyx@2022"user_consumer="zfyx@2022";};$ grep kafka_server_jaas zookeeper-server-start-sasl.shexport KAFKA_HEAP_OPTS="-Xmx512M -Xms512M -Djava.security.auth.login.config=${KAFKA_HOME}/config/kafka_server_jaas.conf"$ grep kafka_server_jaas kafka-server-start-sasl.shexport KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=${KAFKA_HOME}/config/kafka_server_jaas.conf"
2. Dockerfile
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \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等" \image.ref.name="openjdk:8-jdk" \image.title="kafka" \image.version="2.13-2.8.1" \image.vendor="VMware, Inc." \build.date="2022.11.16"ENV KAFKA_VERSION 2.13-2.8.1ENV JDK_VERSION 8ENV SASL=falseADD kafka_${KAFKA_VERSION}.tar.gz /opt/RUN set -x ; \#tar xf /opt/kafka_${KAFKA_VERSION}.tar.gz -C /opt/kafka --strip-components 1 ; \tar xf /opt/kafka_${KAFKA_VERSION}.tar.gz ; \mv /opt/kafka_${KAFKA_VERSION} /opt/kafka ; \mkdir /opt/kafka/logs ; \rm -rf /opt/kafka_${KAFKA_VERSION}.tar.gzWORKDIR /opt/kafka/# data目录VOLUME /opt/kafka/zkDataVOLUME /opt/kafka/kafkaDataVOLUME /opt/kafka/logsVOLUME /opt/kafka/configENV KAFKA_HOME=/opt/kafkaCOPY docker-entrypoint.sh /usr/local/bin/RUN set -x \&& chmod +x /usr/local/bin/docker-entrypoint.shEXPOSE 2181 9092#USER nginxCMD ["/usr/local/bin/docker-entrypoint.sh"]
3. docker-entrypoint.sh
#!/bin/sh -x# 控制kafka进程是否启动成功#status=false# 判断SASL是true还是false,如果是true则走认证,否则不走认证脚本# 不添加认证启动if [ $SASL ];then#echo "if $SASL"# 记录SASL的开关echo "SASL=$SASL" > ${KAFKA_HOME}/sasl.txt${KAFKA_HOME}/bin/zookeeper-server-start-sasl.sh -daemon ${KAFKA_HOME}/config/zookeeper.properties# 判断zk是否启动成功sleep 10sjps | grep QuorumPeerMain;if [ $? ];then${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties# 判断是否启动成功#if [ $? ];then# status=true#fifi# 添加认证启动else#echo "else $SASL"echo "SASL=$SASL" > ${KAFKA_HOME}/sasl.txt${KAFKA_HOME}/bin/zookeeper-server-start.sh -daemon ${KAFKA_HOME}/config/zookeeper.properties# 判断zk是否启动成功sleep 10sjps | grep QuorumPeerMain;if [ $? ];then${KAFKA_HOME}/bin/kafka-server-start-sasl.sh -daemon ${KAFKA_HOME}/config/server.properties# 判断是否启动成功# 判断是否启动成功#if [ $? ];then# status=true#fififi# kafka是否启动成功#sleep 30s;#jps | grep Kafka;#if [ $? ];then# echo "=========================================" >> ${KAFKA_HOME}/logs/server.log# echo "\n kafka启动成功! 是否使用SASL认证:$SASL \n" >> ${KAFKA_HOME}/logs/server.log# echo "=========================================" >> ${KAFKA_HOME}/logs/server.log#else# echo "=========================================" >> ${KAFKA_HOME}/logs/server.log# echo "\n kafka启动失败! 是否使用SASL认证:$SASL \n" >> ${KAFKA_HOME}/logs/server.log# echo "=========================================" >> ${KAFKA_HOME}/logs/server.log# # 删除所有进程# for i in $(jps | grep -v Jps | awk '{print $1}'); do kill -9 $i; done#fitail -200f ${KAFKA_HOME}/logs/server.log
3. 测试
# 创建topicbin/kafka-topics.sh --create --topic test1 --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1# 查看topicbin/kafka-topics.sh --list --bootstrap-server localhost:9092# 删除topicbin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic name# 生产消息bin/kafka-console-producer.sh --topic test1 --bootstrap-server localhost:9092# 消费消息bin/kafka-console-consumer.sh --topic test1 --from-beginning --bootstrap-server localhost:9092
kafka
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8-jdk" \image.title="kafka" \image.vendor="VMware, Inc." \build.date="2022.10.9"ENV KAFKA_VERSION 3.0.0ENV SCALA_VERSION 2.13ENV JDK_VERSION 8COPY kafka_2.13-3.0.0.tgz .RUN set -x \&& mkdir /opt/kafka \&& tar xf kafka_2.13-3.0.0.tgz -C /opt/kafka --strip-components 1 \&& cp /opt/kafka/conf/zoo_sample.cfg /opt/kafka/conf/zoo.cfg \&& rm -rf kafka_2.13-3.0.0.tgzWORKDIR /opt/kafka/# data目录VOLUME /opt/kafka/dataVOLUME /opt/kafka/logsVOLUME /opt/kafka/configCOPY docker-entrypoint.sh /opt/kafka/RUN set -x \&& chmod +x /opt/kafka/docker-entrypoint.shEXPOSE 9092#USER nginxCMD ["/opt/kafka/docker-entrypoint.sh"]
cat > docker-entrypoint.sh <<EOF#!/bin/sh/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.propertiestail -f /opt/kafka/logs/kafkaServer.outEOF
cat > server-1.properties <<EOFbroker.id=0num.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/opt/kafka/logs/kafka-logsnum.partitions=1num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1log.retention.hours=168log.segment.bytes=1073741824log.retention.check.interval.ms=300000############################# Zookeeper #############################zookeeper.connect=localhost:2181zookeeper.connection.timeout.ms=18000############################# Group Coordinator Settings #############################group.initial.rebalance.delay.ms=0EOF#=====================================cat > zookeeper-1.properties <<EOFdataDir=/opt/kafka/data/zookeeperclientPort=2181maxClientCnxns=0admin.enableServer=false# admin.serverPort=8080EOF
构建
docker buildx build -t geray/kafka:3.2.1 .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
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8-jdk" \image.title="kafka" \image.vendor="VMware, Inc." \build.date="2022.11.10"ENV schema-registry 7.1.1ENV JDK_VERSION 8ADD confluent-community-7.1.1.tar.gz /opt/RUN set -x ; \mv /opt/confluent-7.1.1 /opt/confluentWORKDIR /opt/confluent/# data目录VOLUME /opt/confluent/etc/schema-registry/#COPY docker-entrypoint.sh /opt/kafka/#RUN set -x \# && chmod +x /opt/kafka/docker-entrypoint.shEXPOSE 8081#USER nginx#CMD ["/opt/kafka/docker-entrypoint.sh"]CMD ["/opt/confluent/bin/schema-registry-start", "/opt/confluent/etc/schema-registry/schema-registry.properties"]
zookeeper和kafka(confluent-community-7.1.1-arm64)
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8-jdk" \image.title="zookeeper" \image.vendor="VMware, Inc." \build.date="2022.11.18"#ENV ZK_VERSION 7.1.1#ENV SCALA_VERSION 2.13ENV JDK_VERSION 8ENV confluent-community=7.1.1ADD confluent-community-7.1.1.tar.gz /WORKDIR /confluent-7.1.1# data目录#VOLUME /tmp/zookeeper#VOLUME /opt/zookeeper/logs#VOLUME /opt/zookeeper/confEXPOSE 8081#ENTRYPOINT ["/confluent-7.1.1/bin/zookeeper-server-start"]#CMD ["/confluent-7.1.1/bin/zookeeper-server-start", "/confluent-7.1.1/etc/kafka/zookeeper.properties"]#CMD ["/confluent-7.1.1/etc/kafka/zookeeper.properties"]# zk配置#ENTRYPOINT ["/confluent-7.1.1/bin/zookeeper-server-start"]#CMD ["/confluent-7.1.1/etc/kafka/zookeeper.properties"]# kafka配置#ENTRYPOINT ["/confluent-7.1.1/bin/kafka-server-start"]#CMD ["/confluent-7.1.1/etc/kafka/server.properties"]## schema-registry配置ENTRYPOINT ["/confluent-7.1.1/bin/schema-registry-start"]CMD ["/confluent-7.1.1/etc/schema-registry/schema-registry.properties"]
zk
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8" \image.title="zookeeper" \image.vendor="VMware, Inc." \build.date="2023.1.10"ENV JDK_VERSION 8ENV confluent-community=7.1.1ADD confluent-community-7.1.1.tar.gz /WORKDIR /confluent-7.1.1VOLUME /tmp/zookeeperEXPOSE 2181# zk配置ENTRYPOINT ["/confluent-7.1.1/bin/zookeeper-server-start"]CMD ["/confluent-7.1.1/etc/kafka/zookeeper.properties"]
kafka
FROM openjdk:8LABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8" \image.title="kafka" \image.vendor="VMware, Inc." \build.date="2023.1.10"ENV JDK_VERSION 8ENV confluent-community=7.1.1ADD confluent-community-7.1.1.tar.gz /WORKDIR /confluent-7.1.1# data目录VOLUME /tmp/kafka-logsEXPOSE 9092# kafka配置ENTRYPOINT ["/confluent-7.1.1/bin/kafka-server-start"]CMD ["/confluent-7.1.1/etc/kafka/server.properties"]
registry
FROM openjdk:8LABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8" \image.title="kafka" \image.vendor="VMware, Inc." \build.date="2023.1.10"ENV JDK_VERSION 8ENV confluent-community=7.1.1ADD confluent-community-7.1.1.tar.gz /WORKDIR /confluent-7.1.1EXPOSE 8081# kafka配置ENTRYPOINT ["/confluent-7.1.1/bin/schema-registry-start"]CMD ["/confluent-7.1.1/etc/schema-registry/schema-registry.properties"]
- 构建
docker build -t geray/zookeeper:confluent-community-7.1.1-amd64 .docker build -t geray/kafka:confluent-community-7.1.1-amd64 .docker build -t geray/kafka-schema-registry:confluent-community-7.1.1-amd64 .
5、ActiveMQ
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>" \image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk:8-jdk" \image.title="activemq" \image.vendor="VMware, Inc." \build.date="2022.10.9"ENV activemq_version 5.11.3# export activemq_version=5.11.3#ENV JDK_VERSION 8COPY apache-activemq-${activemq_version}-bin.tar.gz .RUN set -x \&& mkdir /opt/activemq \&& tar xf apache-activemq-${activemq_version}-bin.tar.gz -C /opt/activemq --strip-components 1 \&& rm -rf apache-activemq-${activemq_version}-bin.tar.gzWORKDIR /opt/activemq/# data目录VOLUME /opt/activemq/dataVOLUME /opt/activemq/confCOPY docker-entrypoint.sh /opt/activemq/RUN set -x \&& chmod +x /opt/activemq/docker-entrypoint.shEXPOSE 1883 8161 5672 61613 37229 61614 61616CMD ["/opt/activemq/docker-entrypoint.sh"]
cat > docker-entrypoint.sh <<EOF#!/bin/sh/opt/activemq/bin/activemq starttail -f /opt/activemq/data/activemq.logEOF
docker build -t geray/activemq:5.11.3 .docker buildx build -t geray/activemq:5.11.3 --platform=linux/arm,linux/arm64,linux/amd64 --push .
6、RocketMQ
FROM openjdk:8-jdkLABEL maintainer="Geray <1690014753@qq.com>"ENV rocketmq_version 4.7.1# export rocketmq_version=4.7.1#ENV JDK_VERSION 8ENV app_name rocketmq#export RS_JAVA_OPT="-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"#export RB_JAVA_OPT="-Xms8g -Xmx8g -Xmn4g"ENV RS_JAVA_OPT "-Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"ENV RB_JAVA_OPT "-Xms8g -Xmx8g -Xmn4g"COPY rocketmq-all-${rocketmq_version}-bin-release.zip .RUN set -x \&& unzip rocketmq-all-${rocketmq_version}-bin-release.zip \&& mv rocketmq-all-${rocketmq_version}-bin-release rocketmq \&& mv rocketmq /opt/ \&& mkdir /opt/rocketmq/logs \&& echo "namesrvAddr=localhost:9876" >> /opt/rocketmq/conf/broker.conf \&& echo "brokerIP1=localhost" >> /opt/rocketmq/conf/broker.conf \&& echo "listenPort==10911" >> /opt/rocketmq/conf/broker.conf \&& echo "listenPort=9876" >> /opt/rocketmq/conf/namesrv.properties \# 设置环境变量&& sed -i 's/^[^#].*Xms4g*/#&/g' /opt/rocketmq/bin/runserver.sh \&& sed -i '/Xms4g/a\JAVA_OPT="${JAVA_OPT} -server ${RS_JAVA_OPT}"' /opt/rocketmq/bin/runserver.sh \&& sed -i 's/^[^#].*Xms*/#&/g' /opt/rocketmq/bin/runbroker.sh \&& sed -i '/Xms/a\JAVA_OPT="${JAVA_OPT} -server ${RB_JAVA_OPT}"' /opt/rocketmq/bin/runbroker.sh \&& rm -rf rocketmq-all-${rocketmq_version}-bin-release.zipWORKDIR /opt/rocketmq/# data目录#VOLUME /opt/rocketmq/dataVOLUME /opt/rocketmq/confCOPY docker-entrypoint.sh /opt/rocketmq/RUN set -x \&& chmod +x /opt/rocketmq/docker-entrypoint.shEXPOSE 9876 10911 10909 10912CMD ["/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
:::
cat > docker-entrypoint.sh <<EOF#!/bin/sh# export JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"#export JAVA_OPT="${JAVA_OPT} -server ${Xms} ${Xmx} ${Xmn}"nohup /opt/rocketmq/bin/mqnamesrv > /opt/rocketmq/logs/mqnamesrv.log 2>&1 &#tail -f ~/logs/rocketmqlogs/namesrv.lognohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/broker.conf > /opt/rocketmq/logs/mqbroker.log 2>&1 &tail -f /opt/rocketmq/logs/mqbroker.logEOF
docker build -t geray/rocketmq:4.7.1 .docker buildx build -t geray/rocketmq:4.7.1 --platform=linux/arm,linux/arm64,linux/amd64 --push .
配置文件:
brokerClusterName = DefaultClusterbrokerName = broker-abrokerId = 0deleteWhen = 04fileReservedTime = 48brokerRole = ASYNC_MASTERflushDiskType = ASYNC_FLUSHnamesrvAddr=rocketmq-svc.mssq-fwrhxt:9876brokerIP1=rocketmq-svc.mssq-fwrhxtlistenPort=10911
7、nacos
2.1.0
FROM openjdk:8-jdkLABEL image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk-8" \image.title="nacos" \image.vendor="VMware, Inc." \build.date="2022.11.9"ADD nacos-server-2.1.0.tar.gz /opt/ENV MODE=standaloneCOPY docker-entrypoint.sh /opt/nacos/RUN set -x \&& chmod +x /opt/nacos/docker-entrypoint.shWORKDIR /opt/nacos/VOLUME /opt/nacos/dataVOLUME /opt/nacos/logsEXPOSE 8848CMD ["/opt/nacos/docker-entrypoint.sh"]
- 构建
cat docker-entrypoint.sh#!/bin/shif [ $MODE ];then/opt/nacos/bin/startup.sh -m $MODEelse/opt/nacos/bin/startup.shfitail -f /opt/nacos/logs/start.out
- 构建
docker build -t geray/nacos:2.1.0 .
2.0.3
FROM openjdk:8-jdkLABEL image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk-8" \image.title="nacos" \image.vendor="VMware, Inc." \build.date="2022.10.6"ADD nacos-server-2.0.3.tar.gz /opt/ENV MODE standaloneCOPY docker-entrypoint.sh /opt/nacos/RUN set -x \&& chmod +x /opt/nacos/docker-entrypoint.shWORKDIR /opt/nacos/VOLUME /opt/nacos/dataVOLUME /opt/nacos/logsEXPOSE 8848CMD ["/opt/nacos/docker-entrypoint.sh"]
cat docker-entrypoint.sh#!/bin/shif [ $MODE ];then/opt/nacos/bin/startup.sh -m $MODEelse/opt/nacos/bin/startup.shfitail -f /opt/nacos/logs/start.out
构建
docker build -t geray/nacos:2.0.3 .
1.3.0
FROM geray/hs_jdk:v1.8.0_291LABEL image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="openjdk-8" \image.title="nacos" \image.vendor="VMware, Inc." \build.date="2022.10.19"ADD nacos-server-1.3.0.tar.gz /opt/ENV MODE standaloneCOPY docker-entrypoint.sh /opt/nacos/RUN set -x \&& chmod +x /opt/nacos/docker-entrypoint.shWORKDIR /opt/nacos/VOLUME /opt/nacos/dataVOLUME /opt/nacos/logsEXPOSE 8848CMD ["/opt/nacos/docker-entrypoint.sh"]
docker build -t geray/nacos:1.3.0 .
配置用户
# 创建用户CREATE USER 'nacos'@'%' IDENTIFIED BY 'Dgms@2022';# 将数据库nacos所有表授权给 nacos@localhostGRANT ALL PRIVILEGES ON nacos_ks.* TO 'nacos'@'%';flush privileges;# 删除用户DROP USER IF EXISTS 'nacos'@'%';# 查看权限SHOW GRANTS FOR 'nacos'@'%';
8、minio
FROM geray/alpine:3.16.2LABEL image.authors="geray" \image.description="Application packaged by Geray" \image.ref.name="alpine" \image.title="minio" \image.vendor="VMware, Inc." \build.date="2022.10.6"#ENV MINIO_ACCESS_KEY minioadmin#ENV MINIO_SECRET_KEY minioadminENV MINIO_ROOT_USER minioadminENV MINIO_ROOT_PASSWORD minioadminCOPY minio /usr/local/bin/RUN set -x; \chmod +x /usr/local/bin/minio; \mkdir /data/VOLUME /data/EXPOSE 9000 9001#ENTRYPOINT ["minio"]CMD ["minio", "server", "/data", "--console-address", ":9001"]
docker build -t geray/minio:RELEASE.2022-10-05T14-58-27Z-amd .# 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二进制文件
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安装依赖等
cat DockerfileFROM python:latestRUN set -ex && \apt-get update && \apt-get install -y locales-all fonts-wqy-microhei fonts-wqy-zenhei xfonts-wqy && \apt-get install vim -y && \apt-get install vim-tiny vim-common -y && \pip install pyinstaller && \pip install pymysql# 设置环境变量以使用UTF-8编码和中文LocaleENV LANG=zh_CN.UTF-8ENV LANGUAGE=zh_CN.UTF-8ENV LC_ALL=zh_CN.UTF-8
