Docker 有很多优点:
但是 Docker 也有一些缺点:
不知道有没有用户有跟我一样的需求:就是想在电脑上用 Docker 跑起来一个服务比如 MySQL,但不需要处理太多容器的细节和配置,你跑的跟原生 MySQL 一样就行了,跑完就能用 3306 端口,日志和数据在固定的路径能找到。
总结来说这个工具用户接口很像包管理工具,比如 Homebrew:
brew services start mysql
但是底层用的是 Docker,并帮忙我们配置好了启动命令。(注意我需要的是用户不用管配置的,docker compose 解决不了)
我自己没找到这类工具,就搞了一个原型版本:https://github.com/songhuangcn/dpm
大家有这类工具推荐吗?
Docker Compose 是提供一种配置组织方式给用户来配置
而这个工具是自带了各种软件包的配置,用户都不需要懂 docker 就能跑起来(跑起来的服务尽可能的跟原生应用一样)
你这个设想行不通。 我在论坛向新手推广 dokku 部署 rails 应用,dokku 也是基于 docker 的,但是很多新人还是选择配置坑爹的 passenger,因为 dokku 门槛更高,需要熟悉 docker 才行。
@pynix @Rei 两位经验都比较足,非常感谢回复(dokku 我有玩过,个人还挺喜欢的)
借机再问个其他问题,在服务器上虽然项目有 docker-compose.yml 配置好了项目服务,但还会有公共服务比如 nginx(因为不可能每个项目都起一个 nginx 服务吧),如果这些公共服务我也想用 docker 跑起来,暂时遇到两种组织方式:
用 bash 脚本存命令的:
我自己是维护一个全局 ~/docker-compose.yml
,里面配了公共的所有服务 (nginx,mysql 等),然后:
docker-compose up nginx
docker-compose up mysql
想问一下这种场景下好一点的组织方式是啥以及有没有相关工具来处理这个?
我之前跑很多 docker compose,然后用https://nginxproxymanager.com 这个管理 nginx 端口,SSL 证书等。
之前用 docker compose 算是踩了个小坑,compose 按顺序启动容器,但是又不是顺序启动,而是 A 开始启动后就开始 B 容器启动。导致数据库还没启动好,web 服务已经 panic 连不到数据库
这个可不可以,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