docker 容器启动后执行命令 -- 简单实现

【问题原因】客户希望自己的应用上线后执行一个命令完成配置。其实我记得官方有 openapi 可以通过代码实现。但是我人微言轻还是先想想怎么实现。就是在这个容器应用中部署一个 jfrog 客户端,需要在容器启动后执行一个配置命令 jfrog config add XXXXX(包含服务主机,用户名和密码)

【初步想法】因为项目是通过 docker 部署的,我一开始想法是修改 dockerfile 实现那个。

【遇到的问题】因为有两套环境,生产和测试的。对应的启动命令不一样(后来发现版本都不一样)。所以我进一步的想法就是在流水线上修改代 dockerfile,也就是代码编译后进行操作。

  1. 他的那个 entrypoint 执行的是一个脚本实现 java 环境的全局配置,cmd 启动 jar。

  2. 查找资料发现 entrypoint 和 cmd 的区别:

    Dockerfile 中 CMD 和 ENTRYPOINT 命令详解_docker_脚本之家 (jb51.net)

docker 所以从头到为还是建议使用 exec 模式完成内容

【发生的插曲】昨天晚上,找到了那个配置文件,对于使用 kubernetes 维护的系统来说,可以直接挂载文件也是方便的。所以直接就把配置文件放到对应位置,替换下。

但是不实用,jfrog 维护这个配置文件,在文件上传的时候还是要对这个文件进行写操作,挂载文件这个会将文件属性变为只读。所以不可以。就只能使用上面的方法。修改 dockerfile。

缺点个人觉得流水线在构建这些的时候会暴漏关键信息,不太安全。其他没钱没想到有啥问题。运维参与了产品的能力,不知道是好是坏

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    424 引用 • 881 回帖 • 181 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    848 引用 • 916 回帖 • 183 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    136 引用 • 252 回帖
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    100 引用 • 52 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...