开源项目 Docker 启动命令太长了,有没有约定好配置的封装工具?

pinewong · 2022年08月27日 · 最后由 jyz19880823 回复于 2022年10月11日 · 1308 次阅读

Docker 有很多优点:

  1. 不依赖操作系统,怎么升级系统都不怕
  2. 由于第 1 点,方便运行一些操作系统已经不支持的软件版本
  3. 因为隔离性,很方便同时运行一个软件的不同版本(开发不同项目时经常需要)

但是 Docker 也有一些缺点:

  1. 配置太繁琐,新人需要了解一堆新概念:volume, publish, export

不知道有没有用户有跟我一样的需求:就是想在电脑上用 Docker 跑起来一个服务比如 MySQL,但不需要处理太多容器的细节和配置,你跑的跟原生 MySQL 一样就行了,跑完就能用 3306 端口,日志和数据在固定的路径能找到。

总结来说这个工具用户接口很像包管理工具,比如 Homebrew:

brew services start mysql

但是底层用的是 Docker,并帮忙我们配置好了启动命令。(注意我需要的是用户不用管配置的,docker compose 解决不了)

我自己没找到这类工具,就搞了一个原型版本:https://github.com/songhuangcn/dpm

大家有这类工具推荐吗?

pynix 回复

Docker Compose 是提供一种配置组织方式给用户来配置

而这个工具是自带了各种软件包的配置,用户都不需要懂 docker 就能跑起来(跑起来的服务尽可能的跟原生应用一样)

pinewong 回复

你这个设想行不通。 我在论坛向新手推广 dokku 部署 rails 应用,dokku 也是基于 docker 的,但是很多新人还是选择配置坑爹的 passenger,因为 dokku 门槛更高,需要熟悉 docker 才行。

楼主这个工具面向的对象是:想安装一个服务,了解 docker 的好处,但又不想学习 docker 用法的开发者。

我感觉这个范围比较小……

@pynix @Rei 两位经验都比较足,非常感谢回复(dokku 我有玩过,个人还挺喜欢的)

借机再问个其他问题,在服务器上虽然项目有 docker-compose.yml 配置好了项目服务,但还会有公共服务比如 nginx(因为不可能每个项目都起一个 nginx 服务吧),如果这些公共服务我也想用 docker 跑起来,暂时遇到两种组织方式:

  1. 用 bash 脚本存命令的:

  2. 我自己是维护一个全局 ~/docker-compose.yml,里面配了公共的所有服务 (nginx,mysql 等),然后:

    docker-compose up nginx
    docker-compose up mysql
    

想问一下这种场景下好一点的组织方式是啥以及有没有相关工具来处理这个?

pinewong 回复

假设是小项目,云服务只提供虚拟机没有容器服务的话。一个项目一个虚拟机,用各自的 docker-compose.yml。

我之前跑很多 docker compose,然后用https://nginxproxymanager.com 这个管理 nginx 端口,SSL 证书等。

docker desktop 这不就是,小白就不用搞细节,出问题了 just reinstall

之前用 docker compose 算是踩了个小坑,compose 按顺序启动容器,但是又不是顺序启动,而是 A 开始启动后就开始 B 容器启动。导致数据库还没启动好,web 服务已经 panic 连不到数据库

SunA0 回复

设置了 depends_on 了吗?

Rei 回复

设了,当时直接贴的配置,后来用了wait-for-it算是解决吧

SunA0 回复

奇怪,我本地没出现过。线上一般用托管的数据库。

Rei 回复

对,后来数据库直接不用容器搞了。相关文章也有提及,一搜就有

SunA0 回复

可能启动慢相当于等了几秒 😂

1c7 回复

Makefile 也是一种组织方案,可以减短命令。

这个可不可以,https://github.com/bibendi/dip

DIP

Docker Interaction Program.

Development-environment CLI program providing the native-like interaction with a Dockerized application. It creates the feeling that you are working without mind-blowing commands to run the containers.

@yshi100 这个工具不错,也能简化 Docker 的使用。不过他是给项目用的,需要项目里配置一个 dip.yml。

我想找一个项目无关的不需要配置的,能像包管理器一样使用 Docker:

dpm install [email protected]
dpm start [email protected] # 启动之后 mysql 配置文件会放到一个约定目录(比如 ~/.dpm/config/[email protected]),然后默认端口 3306 也能直接用(实际上就是帮我们配置好了暴露端口这个)
dpm stop [email protected]
dpm list

docker-compose / docker compose

20 楼 已删除

dokku 很好用。

portainer 符合,前提是先启动 portainer

需要 登录 后方可回复, 如果你还没有账号请 注册新账号