如何将整个运行环境打包成docker

场景

某个项目,用的tomcat+redis+zookeeper,然后这个项目已经产品化,很多地方都需要部署,并且有很多有细微差别的版本。
然后我这边是需要部署测试环境,一台机可能会部署好几个。
按照传统部署方式,要好几个tomcat,好几个redis,好几个zookeeper。理论上部署确实没问题,但是数量一上来,发现端口的配置非常麻烦:tomcat端口到处改,redis端口到处改,zookeeper也是。部署的时候都不知道下一个服务要用什么端口了。。哪个系统对应哪个端口也记不住,非常混乱。

思路

鉴于以上情况,我考虑将整个环境打包成一个docker镜像(数据库除外),然后只要拿着这个镜像,需要部署的时候直接拿着这个镜像部署就行,一个服务指定一个端口,完事,好管理的多。

实现

首先需要准备tomcat,redis,zookeeper的安装包(因为docker的基础环境没办法用yum,或者很麻烦),然后在真实环境中将这些组件解压,安装好(也就是拿到一个能够运行的文件夹)
然后就可以写Dockerfile了。

# 使用jdk8作为基础镜像
FROM eclipse/centos_jdk8:latest# 复制tomcat
COPY tomcat /usr/local/tomcat
COPY redis-5.0.6 /root/redis
COPY apache-zookeeper-3.9.2-bin /root/zookeeper
COPY start.sh /root/# 暴露Tomcat的端口
EXPOSE 8080# 启动Tomcat
USER root
RUN chmod a+x /usr/local/tomcat/bin/catalina.sh
RUN chmod a+x /usr/local/tomcat/bin/startup.sh
RUN chmod a+x /root/redis/src/redis-server
RUN chmod a+x /root/zookeeper/bin/zkServer.sh
RUN chmod a+x /root/start.sh
# 处理tomcat日志乱码问题
ENV TZ 'Asia/Shanghai'
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8#CMD ["/root/redis/src/redis-server","/root/redis/redis.conf"]
#CMD ["/root/zookeeper/bin/zkServer.sh","start"]
#cmd命令只能有一个,后面的会覆盖前面的
#CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
CMD ["/root/start.sh"]

此处注意,如果docker还没有登录,要先docker login一下,不然拉不到基础镜像

docker login -u username  -p password
#然后使用
docker build -t ddhmw .
#进行打包,ddhmw是你要打出来的包的名称,注意最后面还有个点,代表是当前目录,不能省略
#这个命令会自动识别当前目录下的DockerFile
#然后启动容器,1300是宿主机的端口,8080是docker容器里面暴露的端口
docker run -d -p 1300:8080 --privileged --name ddhmw ddhmw
#完成
#可以这样查看日志
docker logs -f --tail 500 ddhmw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387906.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】详解计数排序:小范围整数排序的最佳选择

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​ 目录 一、引言 二、计数排序的基本原理 三、实现步骤 1. 确定数据范围 2. 初始化计数数组…

Serverless Knative冷启动与自动扩缩容研究:从原理到实践

最近一个研究生网页的提问,然后就有了这篇博客! 大佬你好,我看到您的关于Serverless的文章于是十分冒昧的向您提问。我现在是一名在研究通过Serverless容器调度解决冷启动问题的本科生,导师放养,就让看论文但是后面的代…

ubuntu20.04.6 安装Skywalking 10.0.1

1.前置准备 1.1. **jdk17(Skywalking10 jdk22不兼容,用17版本即可)**安装: https://blog.csdn.net/CsethCRM/article/details/140768670 1.2. elasticsearch安装: https://blog.csdn.net/CsethCRM/article/details…

Python入门宝藏《看漫画学Python》,495页漫画带你弄清python知识点!简单易懂 | 附PDF全彩版

华为出品的《看漫画学Python》全彩PDF教程是一本适合Python初学者的学习资料,通过漫画的形式将复杂的Python技术问题简单化,使学习过程更加生动有趣。以下是对该教程的内容简介、本书概要及本书目录的详细解析: 内容简介 《看漫画学Python》…

手机三要素接口怎么对接呢?(一)

一、什么是手机三要素? 手机三要素又叫运营商三要素,运营商实名认证,运营商实名核验,手机三要素实名验证,手机三要素实名核验,每个人的称呼都不同,但是入参和出参是一样的。 输入姓名、身份证…

MATLAB基础:函数与函数控制语句

今天我们继续学习Matlab中函数相关知识。 API的查询和调用 help 命令是最基本的查询方法,可查询所有目录、指定目录、命令、函数。 我们直接点击帮助菜单即可查询所需的API函数。 lookfor 关键字用于搜索相关的命令和函数。 如,我们输入lookfor inpu…

矩估计与最大似然估计的通俗理解

点估计与区间估计 矩估计与最大似然估计都属于点估计,也就是估计出来的结果是一个具体的值。对比区间估计,通过样本得出的估计值是一个范围区间。例如估计馒头店每天卖出的馒头个数,点估计就是最终直接估计每天卖出10个,而区间估…

【机器学习基础】机器学习的数学基础

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

鸿蒙(HarmonyOS)DatePicker+TimePicker时间选择控件

一、操作环境 操作系统: Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0(API 9) 二、效果图 可实现两种选择方式,可带时分选择,也可不带,使用更加方便。 三、代码 SelectedDateDialog…

2024下半年,前端的技术风口来了

“ 你近期有体验过哪些大模型产品呢? 你有使用大模型API做过一些实际开发吗? 在你日常开发中,可以与大模型相关应用结合来完成工作吗? ” **最近,一直在和同事聊,关于前端可以用大模型干点啥&#xff…

实战:安装ElasticSearch 和常用操作命令

概叙 科普文:深入理解ElasticSearch体系结构-CSDN博客 Elasticsearch各版本比较 ElasticSearch 单点安装 1 创建普通用户 #1 创建普通用户名,密码 [roothlink1 lyz]# useradd lyz [roothlink1 lyz]# passwd lyz#2 然后 关闭xshell 重新登录 ip 地址…

Nat Med·UNI:开启计算病理学新篇章的自监督基础模型|顶刊精析·24-07-31

小罗碎碎念 本期推文主题 这一期推文是病理AI基础模型UNI的详细介绍,原文如下。下期推文会介绍如何使用这个模型,为了你能看懂下期的推文,强烈建议你好好看看今天这期推文。 看完这篇推文以后,你大概就能清楚这个模型对自己的数据…

卷积神经网络(六)---实现 cifar10 分类

cifar10 数据集有60000张图片,每张图片的大小都是 32x32 的三通道的彩色图,一共是10种类别、每种类别有6000张图片,如图4.27所示。 图 4.27 cifar数据集 使用前面讲过的残差结构来处理 cifar10 数据集,可以实现比较高的准确率。 …

麦田物语第十五天

系列文章目录 麦田物语第十五天 文章目录 系列文章目录一、构建游戏的时间系统二、时间系统 UI 制作总结 一、构建游戏的时间系统 在该游戏中我们要构建年月日天时分秒等时间的概念,从而实现季节的更替,昼夜的更替等(不同的季节可以播种不同…

【MATLAB源码】机器视觉与图像识别技术实战示例文档---鱼苗面积预测计数

系列文章目录 第一篇文章:【MATLAB源码】机器视觉与图像识别技术—视觉系统的构成(视频与图像格式转换代码及软件下载) 第二篇文章:【MATLAB源码】机器视觉与图像识别技术(2)—图像分割基础 第三篇文章:【MATLAB源码】机器视觉与图像识别技术…

提交高通量测序处理数据到 GEO --- 操作流程

❝ 写在前面 由于最近在提交课题数据到 NCBI 数据库,整理了相关笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. 提交高通量测序数据到 GEO --- 说明书 2. 提交高通量测序原…

jQuery前端网页制作

1、Jquery的概述 1.1JavaScript库 JavaScript 高级程序设计(特别是对浏览器差异的复杂处理),通常很困难也很耗时。 为了应对这些调整,许多的 JavaScript (helper) 库应运而生。 这些 JavaScript 库常被称为 JavaScript 框架。 市面上一些广受欢迎的 JavaScript 框架:…

基于Docker搭建ELK

目录 1.系统操作 2.搭建es 3.kibana(新起终端跟es一起启动) 4.logstash(新起终端和es一起启动) 5.修改logstash配置文件 6. 创建索引 7. exit #退出容器 8. 在logstash节点插入数据,测试是否能拿取到(下面如果本身有数据…

基于多种机器学习的豆瓣电影评分预测与多维度可视化【可加系统】

有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 在本研究中,我们采用Python编程语言,利用爬虫技术实时获取豆瓣电影最新数据。通过分析豆瓣网站的结构,我们设计了一套有效的策略来爬取电影相关的JSON格式数据。…

[FBCTF2019]RCEService (PCRE回溯绕过和%a0换行绕过)

json格式输入ls出现index.php 这道题原本是给了源码的&#xff0c;BUUCTF没给 源码&#xff1a; <?phpputenv(PATH/home/rceservice/jail);if (isset($_REQUEST[cmd])) {$json $_REQUEST[cmd];if (!is_string($json)) {echo Hacking attempt detected<br/><br/…