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

场景

某个项目,用的tomcat+redis+zookeeper,然后这个项目已经产品化,很多地方都需要部署,并且有很多有细微差别的版本。

然后我这边是需要部署测试环境,一台机可能会部署好几个。

按照传统部署方式,要好几个tomcat,好几个redis,好几个zookeeper。理论上部署确实没问题,但是数量一上来,发现端口的配置非常麻烦:tomcat端口到处改,redis端口到处改,zookeeper也是。部署的时候都不知道下一个服务要用什么端口了。。哪个系统对应哪个端口也记不住,非常混乱。

思路

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

实现

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

然后就可以写Dockerfile了。

bash 复制代码
# 使用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一下,不然拉不到基础镜像

bash 复制代码
docker login -u username  -p password
bash 复制代码
#然后使用
docker build -t ddhmw .
#进行打包,ddhmw是你要打出来的包的名称,注意最后面还有个点,代表是当前目录,不能省略
#这个命令会自动识别当前目录下的DockerFile
bash 复制代码
#然后启动容器,1300是宿主机的端口,8080是docker容器里面暴露的端口
docker run -d -p 1300:8080 --privileged --name ddhmw ddhmw
#完成
#可以这样查看日志
docker logs -f --tail 500 ddhmw
相关推荐
Java陈序员2 天前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
爱吃橘子橙子柚子2 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Sheffield3 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield4 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽4 天前
win10下运行Start Broker and Proxy报错解决
docker
舒一笑4 天前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData4 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户13573999256605 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h5 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔5 天前
通过 Docker 创建开发环境
docker·开发环境