1、centos
vi Dockerfile
#FROM geray/centos:v7.3.0
FROM centos:7
LABEL 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.conf
ENV TZ "Asia/Shanghai"
ENV LANG en_US.UTF-8
ENV LANG zh_CN.UTF-8
echo "*" > .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.0
LABEL 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 <<EOF
deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-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 multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
EOF
cat > /etc/resolv.conf <<EOF
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4
EOF
vi Dockerfile
FROM geray/centos:v7.3.0
LABEL 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
#env
ENV TZ "Asia/Shanghai"
#ENV LANG en_US.UTF-8
ENV LANG zh_CN.UTF-8
echo "*" > .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.0
LABEL 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 nginx
ENV OPENSSL_VERSION 1.1.1q
ENV PRCE_VERSION 8.45
ENV ZLIB_VERSION 1.2.12
ENV LIBFASTCOMMON_VERSION 1.0.53
ENV FASTDFS_VERSION 6.07
ENV FASTDFS_VERSION 6.07
ENV fastdfs-nginx-module_version 1.22
ENV NGINX_VERSION 1.22.0
COPY 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.gz
RUN 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.gz
RUN 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.conf
VOLUME /usr/local/nginx/conf
VOLUME /usr/local/nginx/logs
COPY 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/nginx
WORKDIR /usr/local/nginx
EXPOSE 80
#USER nginx
CMD ["/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.conf
while [[ true ]]; do
sleep 1
done
:::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
# zk
docker commit -a "geray" <镜像名称或ID> 10.223.216.37:5000/zookeeper:
4、zookeeper
FROM openjdk:8-jdk
LABEL 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.13
ENV JDK_VERSION 8
COPY 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.gz
WORKDIR /opt/zookeeper/
# data目录
VOLUME /tmp/zookeeper
VOLUME /opt/zookeeper/logs
VOLUME /opt/zookeeper/conf
COPY docker-entrypoint.sh /opt/zookeeper/
RUN set -x \
&& chmod +x /opt/zookeeper/docker-entrypoint.sh
EXPOSE 2181
#USER nginx
CMD ["/opt/zookeeper/docker-entrypoint.sh"]
cat > docker-entrypoint.sh <<EOF
#!/bin/sh
/opt/zookeeper/bin/zkServer.sh start
tail -f /opt/zookeeper/logs/zookeeper--server-*.out
EOF
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-jdk
LABEL 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.0
ENV SCALA_VERSION 2.13
ENV JDK_VERSION 8
COPY 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.tgz
WORKDIR /opt/kafka/
# data目录
VOLUME /opt/kafka/data
VOLUME /opt/kafka/logs
VOLUME /opt/kafka/config
COPY docker-entrypoint.sh /opt/kafka/
RUN set -x \
&& chmod +x /opt/kafka/docker-entrypoint.sh
EXPOSE 2181 9092
#USER nginx
CMD ["/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.properties
tail -f /opt/kafka/logs/kafkaServer.out
EOF
docker buildx build -t geray/kafka:3.0.0-zk --platform=linux/arm64,linux/amd64 --push .
FROM geray/kafka:3.0.0-zk
COPY docker-entrypoint.sh /opt/kafka/
RUN set -xe \
chmod 777 /opt/kafka/docker-entrypoint.sh \
chmod 777 /usr/bin/docker-entrypoint.sh
EXPOSE 9092/tcp 2181/tcp
CMD [ "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.properties
dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=0
admin.enableServer=false
$ sed -i '/^#/d;/^$/d' server.properties
$ cat server.properties
broker.id=1
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=419430400
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=127.0.0.1:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
# kafka和zk公用同一个认证
$cat kafka_server_jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="zfyx@2022"
user_admin="zfyx@2022"
user_producer="zfyx@2022"
user_consumer="zfyx@2022";
};
$ grep kafka_server_jaas zookeeper-server-start-sasl.sh
export 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.sh
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=${KAFKA_HOME}/config/kafka_server_jaas.conf"
2. Dockerfile
FROM openjdk:8-jdk
LABEL 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.1
ENV JDK_VERSION 8
ENV SASL=false
ADD 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.gz
WORKDIR /opt/kafka/
# data目录
VOLUME /opt/kafka/zkData
VOLUME /opt/kafka/kafkaData
VOLUME /opt/kafka/logs
VOLUME /opt/kafka/config
ENV KAFKA_HOME=/opt/kafka
COPY docker-entrypoint.sh /usr/local/bin/
RUN set -x \
&& chmod +x /usr/local/bin/docker-entrypoint.sh
EXPOSE 2181 9092
#USER nginx
CMD ["/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 10s
jps | grep QuorumPeerMain;
if [ $? ];then
${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties
# 判断是否启动成功
#if [ $? ];then
# status=true
#fi
fi
# 添加认证启动
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 10s
jps | grep QuorumPeerMain;
if [ $? ];then
${KAFKA_HOME}/bin/kafka-server-start-sasl.sh -daemon ${KAFKA_HOME}/config/server.properties
# 判断是否启动成功
# 判断是否启动成功
#if [ $? ];then
# status=true
#fi
fi
fi
# 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
#fi
tail -200f ${KAFKA_HOME}/logs/server.log
3. 测试
# 创建topic
bin/kafka-topics.sh --create --topic test1 --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
# 查看topic
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
# 删除topic
bin/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-jdk
LABEL 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.0
ENV SCALA_VERSION 2.13
ENV JDK_VERSION 8
COPY 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.tgz
WORKDIR /opt/kafka/
# data目录
VOLUME /opt/kafka/data
VOLUME /opt/kafka/logs
VOLUME /opt/kafka/config
COPY docker-entrypoint.sh /opt/kafka/
RUN set -x \
&& chmod +x /opt/kafka/docker-entrypoint.sh
EXPOSE 9092
#USER nginx
CMD ["/opt/kafka/docker-entrypoint.sh"]
cat > docker-entrypoint.sh <<EOF
#!/bin/sh
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
tail -f /opt/kafka/logs/kafkaServer.out
EOF
cat > server-1.properties <<EOF
broker.id=0
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/kafka/logs/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
############################# Zookeeper #############################
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
############################# Group Coordinator Settings #############################
group.initial.rebalance.delay.ms=0
EOF
#=====================================
cat > zookeeper-1.properties <<EOF
dataDir=/opt/kafka/data/zookeeper
clientPort=2181
maxClientCnxns=0
admin.enableServer=false
# admin.serverPort=8080
EOF
构建
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-jdk
LABEL 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.1
ENV JDK_VERSION 8
ADD confluent-community-7.1.1.tar.gz /opt/
RUN set -x ; \
mv /opt/confluent-7.1.1 /opt/confluent
WORKDIR /opt/confluent/
# data目录
VOLUME /opt/confluent/etc/schema-registry/
#COPY docker-entrypoint.sh /opt/kafka/
#RUN set -x \
# && chmod +x /opt/kafka/docker-entrypoint.sh
EXPOSE 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-jdk
LABEL 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.13
ENV JDK_VERSION 8
ENV confluent-community=7.1.1
ADD confluent-community-7.1.1.tar.gz /
WORKDIR /confluent-7.1.1
# data目录
#VOLUME /tmp/zookeeper
#VOLUME /opt/zookeeper/logs
#VOLUME /opt/zookeeper/conf
EXPOSE 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-jdk
LABEL 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 8
ENV confluent-community=7.1.1
ADD confluent-community-7.1.1.tar.gz /
WORKDIR /confluent-7.1.1
VOLUME /tmp/zookeeper
EXPOSE 2181
# zk配置
ENTRYPOINT ["/confluent-7.1.1/bin/zookeeper-server-start"]
CMD ["/confluent-7.1.1/etc/kafka/zookeeper.properties"]
kafka
FROM openjdk:8
LABEL 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 8
ENV confluent-community=7.1.1
ADD confluent-community-7.1.1.tar.gz /
WORKDIR /confluent-7.1.1
# data目录
VOLUME /tmp/kafka-logs
EXPOSE 9092
# kafka配置
ENTRYPOINT ["/confluent-7.1.1/bin/kafka-server-start"]
CMD ["/confluent-7.1.1/etc/kafka/server.properties"]
registry
FROM openjdk:8
LABEL 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 8
ENV confluent-community=7.1.1
ADD confluent-community-7.1.1.tar.gz /
WORKDIR /confluent-7.1.1
EXPOSE 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-jdk
LABEL 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 8
COPY 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.gz
WORKDIR /opt/activemq/
# data目录
VOLUME /opt/activemq/data
VOLUME /opt/activemq/conf
COPY docker-entrypoint.sh /opt/activemq/
RUN set -x \
&& chmod +x /opt/activemq/docker-entrypoint.sh
EXPOSE 1883 8161 5672 61613 37229 61614 61616
CMD ["/opt/activemq/docker-entrypoint.sh"]
cat > docker-entrypoint.sh <<EOF
#!/bin/sh
/opt/activemq/bin/activemq start
tail -f /opt/activemq/data/activemq.log
EOF
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-jdk
LABEL maintainer="Geray <1690014753@qq.com>"
ENV rocketmq_version 4.7.1
# export rocketmq_version=4.7.1
#ENV JDK_VERSION 8
ENV 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.zip
WORKDIR /opt/rocketmq/
# data目录
#VOLUME /opt/rocketmq/data
VOLUME /opt/rocketmq/conf
COPY docker-entrypoint.sh /opt/rocketmq/
RUN set -x \
&& chmod +x /opt/rocketmq/docker-entrypoint.sh
EXPOSE 9876 10911 10909 10912
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
:::
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.log
nohup /opt/rocketmq/bin/mqbroker -c /opt/rocketmq/conf/broker.conf > /opt/rocketmq/logs/mqbroker.log 2>&1 &
tail -f /opt/rocketmq/logs/mqbroker.log
EOF
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 = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr=rocketmq-svc.mssq-fwrhxt:9876
brokerIP1=rocketmq-svc.mssq-fwrhxt
listenPort=10911
7、nacos
2.1.0
FROM openjdk:8-jdk
LABEL 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=standalone
COPY docker-entrypoint.sh /opt/nacos/
RUN set -x \
&& chmod +x /opt/nacos/docker-entrypoint.sh
WORKDIR /opt/nacos/
VOLUME /opt/nacos/data
VOLUME /opt/nacos/logs
EXPOSE 8848
CMD ["/opt/nacos/docker-entrypoint.sh"]
- 构建
cat docker-entrypoint.sh
#!/bin/sh
if [ $MODE ];then
/opt/nacos/bin/startup.sh -m $MODE
else
/opt/nacos/bin/startup.sh
fi
tail -f /opt/nacos/logs/start.out
- 构建
docker build -t geray/nacos:2.1.0 .
2.0.3
FROM openjdk:8-jdk
LABEL 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 standalone
COPY docker-entrypoint.sh /opt/nacos/
RUN set -x \
&& chmod +x /opt/nacos/docker-entrypoint.sh
WORKDIR /opt/nacos/
VOLUME /opt/nacos/data
VOLUME /opt/nacos/logs
EXPOSE 8848
CMD ["/opt/nacos/docker-entrypoint.sh"]
cat docker-entrypoint.sh
#!/bin/sh
if [ $MODE ];then
/opt/nacos/bin/startup.sh -m $MODE
else
/opt/nacos/bin/startup.sh
fi
tail -f /opt/nacos/logs/start.out
构建
docker build -t geray/nacos:2.0.3 .
1.3.0
FROM geray/hs_jdk:v1.8.0_291
LABEL 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 standalone
COPY docker-entrypoint.sh /opt/nacos/
RUN set -x \
&& chmod +x /opt/nacos/docker-entrypoint.sh
WORKDIR /opt/nacos/
VOLUME /opt/nacos/data
VOLUME /opt/nacos/logs
EXPOSE 8848
CMD ["/opt/nacos/docker-entrypoint.sh"]
docker build -t geray/nacos:1.3.0 .
配置用户
# 创建用户
CREATE USER 'nacos'@'%' IDENTIFIED BY 'Dgms@2022';
# 将数据库nacos所有表授权给 nacos@localhost
GRANT 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.2
LABEL 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 minioadmin
ENV MINIO_ROOT_USER minioadmin
ENV MINIO_ROOT_PASSWORD minioadmin
COPY 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 Dockerfile
FROM python:latest
RUN 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编码和中文Locale
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN.UTF-8
ENV LC_ALL=zh_CN.UTF-8