资讯动态

Dockerfile制作镜像示例 X86版本

发布时间:2026/9/2 12:26:54 来源:尧图企业网站定制
基础镜像ubuntu20.04build命令nohup docker build -t image_name . build.log 21 run命令docker run -itd --name container_name -p port:port image_name查看日志docker logs -f container_name测试可以通过服务自身命令、端口等方面进行测试Dockerfileelasticsearch 7.15.0FROM ubuntu:20.04-sec # 设置环境变量避免交互模式询问 ENV DEBIAN_FRONTENDnoninteractive # 更新系统并安装必要的依赖 RUN apt-get update apt-get install -y \ wget \ bash \ openjdk-8-jre-headless \ rm -rf /var/lib/apt/lists/* # 创建 Elasticsearch 工作目录 RUN mkdir -p /opt/elasticsearch # 拷贝 Elasticsearch 压缩包 COPY ./elasticsearch-7.15.0-linux-x86_64.tar.gz /opt # 解压 Elasticsearch RUN tar -xzf /opt/elasticsearch-7.15.0-linux-x86_64.tar.gz -C /opt/elasticsearch --strip-components1 # 删除压缩包 RUN rm /opt/elasticsearch-7.15.0-linux-x86_64.tar.gz # 创建数据和日志目录 RUN mkdir -p /opt/elasticsearch/data /opt/elasticsearch/logs # 设置配置文件 RUN sed -i s|#path.data: /path/to/data|path.data: /opt/elasticsearch/data| /opt/elasticsearch/config/elasticsearch.yml RUN sed -i s|#path.logs: /path/to/logs|path.logs: /opt/elasticsearch/logs| /opt/elasticsearch/config/elasticsearch.yml # 配置 Elasticsearch 为单节点模式并允许外部访问 RUN echo network.host: 0.0.0.0 /opt/elasticsearch/config/elasticsearch.yml RUN echo discovery.type: single-node /opt/elasticsearch/config/elasticsearch.yml # 设置内存参数 ENV ES_JAVA_OPTS-Xms2g -Xmx2g # 设置环境变量 ENV ELASTICSEARCH_HOME/opt/elasticsearch ENV PATH$PATH:$ELASTICSEARCH_HOME/bin # 允许非 root 用户运行 Elasticsearch RUN chown -R nobody:nogroup /opt/elasticsearch # 暴露 Elasticsearch 端口 EXPOSE 9200 9300 # 以非 root 用户启动 Elasticsearch USER nobody # 启动 Elasticsearch CMD [elasticsearch]etcd 3.5.4FROM ubuntu:20.04-sec # 设置环境变量避免交互模式询问 ENV DEBIAN_FRONTENDnoninteractive # 设置时区避免安装过程中时区警告 ENV TZAsia/Shanghai # 设置环境变量 ENV ETCD_VERSIONv3.5.4 ENV ETCD_ARCHamd64 # 安装必要的工具和依赖 RUN apt-get update apt-get install -y \ curl \ tar \ wget \ ca-certificates \ rm -rf /var/lib/apt/lists/* # 下载并安装 etcd COPY ./etcd-v3.5.4-linux-amd64.tar.gz /tmp RUN tar -xvzf /tmp/etcd-v3.5.4-linux-amd64.tar.gz -C /tmp \ mv /tmp/etcd-${ETCD_VERSION}-linux-${ETCD_ARCH}/etcd /usr/local/bin/ \ mv /tmp/etcd-${ETCD_VERSION}-linux-${ETCD_ARCH}/etcdctl /usr/local/bin/ \ rm -rf /tmp/etcd-v3.5.4-linux-amd64.tar.gz # 创建 etcd 配置目录 RUN mkdir -p /etc/etcd # 设置工作目录 WORKDIR /etc/etcd # 开放 etcd 默认端口 EXPOSE 2379 2380 # 设置启动命令 CMD [etcd]kafka 3.7.1FROM ubuntu:20.04-sec # 设定环境变量避免交互模式的询问 ENV DEBIAN_FRONTENDnoninteractive # 更新系统并安装必要的依赖 RUN apt-get update apt-get install -y \ wget \ openjdk-8-jre-headless \ rm -rf /var/lib/apt/lists/* # 创建 Kafka 工作目录 RUN mkdir -p /opt/kafka # 下载 Kafka 3.7.1 版本 RUN wget -q https://archive.apache.org/dist/kafka/3.7.1/kafka_2.13-3.7.1.tgz -P /tmp # 解压 Kafka 压缩包到工作目录 RUN tar -xzf /tmp/kafka_2.13-3.7.1.tgz -C /opt/kafka --strip-components1 # 删除下载的压缩包 RUN rm /tmp/kafka_2.13-3.7.1.tgz # 创建 Kafka 数据和日志目录 RUN mkdir -p /opt/kafka/data /opt/kafka/logs # 修改 server.properties 配置文件 RUN sed -i s|log.dirs/tmp/kafka-logs|log.dirs/opt/kafka/data| /opt/kafka/config/server.properties RUN echo log4j.appender.kafkaAppender.File/opt/kafka/logs/kafka.log /opt/kafka/config/log4j.properties # 设置环境变量 ENV KAFKA_HOME/opt/kafka ENV PATH$PATH:$KAFKA_HOME/bin # 暴露 Kafka 端口 EXPOSE 9092 # 定义默认的 ZooKeeper 连接地址环境变量 ENV ZOOKEEPER_CONNECTlocalhost:2181 # 编写启动脚本根据环境变量配置 ZooKeeper 地址并启动 Kafka RUN echo #!/bin/bash /start-kafka.sh RUN echo ZOOKEEPER_CONNECT${ZOOKEEPER_CONNECT:-localhost:2181} /start-kafka.sh RUN echo sed -i \s|zookeeper.connect.*|zookeeper.connect\$ZOOKEEPER_CONNECT|\ /opt/kafka/config/server.properties /start-kafka.sh RUN echo exec kafka-server-start.sh /opt/kafka/config/server.properties /start-kafka.sh RUN chmod x /start-kafka.sh # 启动 Kafka CMD [/start-kafka.sh]mongodb 4.4.29FROM ubuntu:20.04-sec # 设置环境变量避免交互模式询问 ENV DEBIAN_FRONTENDnoninteractive # 设置时区避免安装过程中时区警告 ENV TZAsia/Shanghai # 更新并安装必要的依赖 RUN apt-get update \ apt-get install -y \ gnupg \ curl \ lsb-release \ ca-certificates \ rm -rf /var/lib/apt/lists/* # 添加 MongoDB 官方的 GPG 密钥和 APT 存储库 RUN curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - \ echo deb [ archamd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse | tee /etc/apt/sources.list.d/mongodb-org-4.4.list # 更新软件包列表并安装 MongoDB 4.4.29 RUN apt-get update \ apt-get install -y mongodb-org4.4.29 \ rm -rf /var/lib/apt/lists/* # 创建一个目录来存储 MongoDB 数据 RUN mkdir -p /data/db # 暴露默认端口 27017 EXPOSE 27017 # 启动 MongoDB CMD [mongod, --bind_ip, 0.0.0.0]rabbitmq 3.8.3FROM ubuntu:20.04-sec # 设置环境变量避免交互模式询问 ENV DEBIAN_FRONTENDnoninteractive # 设置时区避免安装过程中时区警告 ENV TZAsia/Shanghai # 更新并安装必要的依赖 RUN apt-get update \ apt-get install -y \ curl \ gnupg \ lsb-release \ apt-transport-https \ ca-certificates \ apt-get clean # 添加 RabbitMQ 官方的 apt 仓库 RUN curl -fsSL https://packages.rabbitmq.com/rabbitmq-release.gpg | tee /etc/apt/trusted.gpg.d/rabbitmq.asc \ echo deb https://packages.rabbitmq.com/debian/ erlang/24.x main /etc/apt/sources.list.d/rabbitmq-erlang.list \ echo deb https://packages.rabbitmq.com/debian/ rabbitmq-server main /etc/apt/sources.list.d/rabbitmq.list \ apt-get update # 安装 Erlang 和 RabbitMQ RUN apt-get install -y \ erlang \ rabbitmq-server \ apt-get clean # 开放 RabbitMQ 默认端口 EXPOSE 5672 15672 # 设置 RabbitMQ 环境变量 ENV RABBITMQ_USERguest ENV RABBITMQ_PASSWORDguest ENV RABBITMQ_VHOST/ # 启动 RabbitMQ 服务 CMD [rabbitmq-server]rocketmq 5.0.0FROM ubuntu:20.04-sec # 设置环境变量避免交互式安装时的提示 ENV DEBIAN_FRONTENDnoninteractive # 替换为国内镜像源 #RUN sed -i s|http://archive.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g /etc/apt/sources.list RUN sed -i s|http://archive.ubuntu.com/ubuntu/|http://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g /etc/apt/sources.list # 安装 OpenJDK 8 RUN apt-get update \ apt-get install -y --no-install-recommends \ curl \ openjdk-8-jdk \ zip \ unzip \ rm -rf /var/lib/apt/lists/* # 设置 Java 环境变量 ENV JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64 ENV PATH$JAVA_HOME/bin:$PATH # 使用本地文件 ADD rocketmq-all-5.0.0-bin-release.zip /opt/ RUN unzip /opt/rocketmq-all-5.0.0-bin-release.zip -d /opt \ mv /opt/rocketmq-all-5.0.0-bin-release /opt/rocketmq \ rm /opt/rocketmq-all-5.0.0-bin-release.zip # 设置 RocketMQ 环境变量 ENV ROCKETMQ_HOME/opt/rocketmq ENV PATH$ROCKETMQ_HOME/bin:$PATH # 暴露 RocketMQ 的默认端口 # NameServer 端口9876 # Broker 端口10911 EXPOSE 9876 10911 # 设置工作目录 WORKDIR /opt/rocketmq # 启动 NameServer 和 Broker CMD [sh, -c, bin/mqnamesrv bin/mqbroker -n localhost:9876]zookeeper 3.7.1FROM ubuntu:20.04-sec # 设置环境变量 ENV ZOOKEEPER_VERSION3.7.1 ENV ZOOKEEPER_HOME/opt/zookeeper-$ZOOKEEPER_VERSION # 安装必要的依赖 RUN apt-get update apt-get install -y \ wget \ openjdk-8-jre-headless \ rm -rf /var/lib/apt/lists/* # 下载并解压 ZooKeeper RUN wget -q https://archive.apache.org/dist/zookeeper/zookeeper-$ZOOKEEPER_VERSION/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz \ tar -xzf apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz -C /opt \ mv /opt/apache-zookeeper-$ZOOKEEPER_VERSION-bin $ZOOKEEPER_HOME \ rm apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz # 创建数据目录和日志目录 RUN mkdir -p $ZOOKEEPER_HOME/data $ZOOKEEPER_HOME/logs # 复制配置文件模板 RUN cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg # 更新配置文件中的数据目录和日志目录 RUN sed -i s|dataDir/tmp/zookeeper|dataDir$ZOOKEEPER_HOME/data|g $ZOOKEEPER_HOME/conf/zoo.cfg \ echo dataLogDir$ZOOKEEPER_HOME/logs $ZOOKEEPER_HOME/conf/zoo.cfg # 设置环境变量 ENV PATH$PATH:$ZOOKEEPER_HOME/bin # 暴露 ZooKeeper 端口 EXPOSE 2181 2888 3888 # 启动 ZooKeeper CMD [zkServer.sh, start-foreground]

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价