本仓库包含一系列Dockerfile,用于在Docker Hub(https://hub.docker.com/u/picoded/%EF%BC%89%E8%BF%9B%E8%A1%8C%E8%87%AA%E5%8A%A8%E5%8C%96%E6%9E%84%E5%BB%BA%E3%80%82%E8%BF%99%E4%BA%9BDockerfile%E6%98%AF%E5%9F%BA%E4%BA%8EDevOps%E5%AE%9E%E8%B7%B5%E7%BB%8F%E9%AA%8C%E8%BF%AD%E4%BB%A3%E4%BC%98%E5%8C%96%E7%9A%84%E6%88%90%E6%9E%9C%EF%BC%8C%E9%80%82%E7%94%A8%E4%BA%8E%E5%A4%9A%E7%A7%8D%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%EF%BC%8C%E6%8F%90%E4%BE%9B%E4%BB%8E%E5%9F%BA%E7%A1%80%E7%8E%AF%E5%A2%83%E5%88%B0%E7%89%B9%E5%AE%9A%E4%BB%BB%E5%8A%A1%E6%89%A7%E8%A1%8C%E7%9A%84%E5%AE%8C%E6%95%B4%E6%94%AF%E6%8C%81%E3%80%82
注意:如果直接在Docker中查看此文档,可能正在使用的是处于重写或替换过程中的镜像。
组织化Dockerfile
以下是经过整理的Dockerfile分类及说明,具体详情可参考各子项的README:
base
基于Ubuntu的基础镜像,预安装额外模块(如OpenJDK),用于构建应用运行环境。
- https://github.com/picoded/dockerfiles/tree/master/base/ubuntu-base
- https://github.com/picoded/dockerfiles/tree/master/base/ubuntu-openjdk-8-jdk
git-cloner
用于克隆Git仓库并在其上执行命令的工具。
- https://github.com/picoded/dockerfiles/tree/master/git-cloner/git-cloner-base%EF%BC%9A%E5%9F%BA%E4%BA%8Eubuntu-base%E9%95%9C%E5%83%8F%EF%BC%8C%E5%8C%85%E5%90%ABGit%E5%85%8B%E9%9A%86%E5%8A%9F%E8%83%BD
- https://github.com/picoded/dockerfiles/tree/master/git-cloner/git-cloner-plus%EF%BC%9A%E5%9C%A8base%E5%9F%BA%E7%A1%80%E4%B8%8A%E5%A2%9E%E5%8A%A0%E9%A2%84%E5%AE%89%E8%A3%85%E6%A8%A1%E5%9D%97%EF%BC%88%E5%A6%82Java%E3%80%81npm%E7%AD%89%EF%BC%89
- git-cloner-*:更多变体参考git-cloner-plus
zip-cloner
用于下载ZIP文件、解压并在解压内容上执行命令的工具。
- https://github.com/picoded/dockerfiles/tree/master/zip-cloner/zip-cloner-base%EF%BC%9A%E5%9F%BA%E4%BA%8Eubuntu-base%E9%95%9C%E5%83%8F%EF%BC%8C%E5%8C%85%E5%90%ABZIP%E5%A4%84%E7%90%86%E5%8A%9F%E8%83%BD
- https://github.com/picoded/dockerfiles/tree/master/zip-cloner/zip-cloner-plus%EF%BC%9A%E5%9C%A8base%E5%9F%BA%E7%A1%80%E4%B8%8A%E5%A2%9E%E5%8A%A0%E9%A2%84%E5%AE%89%E8%A3%85%E6%A8%A1%E5%9D%97%EF%BC%88%E5%A6%82Java%E3%80%81npm%E7%AD%89%EF%BC%89
- zip-cloner-*:更多变体参考zip-cloner-plus
runner(s)
启动容器执行特定操作后终止,适用于一次性任务 setup。
- https://github.com/picoded/dockerfiles/tree/master/runner/file-runner%EF%BC%9A%E5%B0%86%E5%86%85%E5%AE%B9%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6
- https://github.com/picoded/dockerfiles/tree/master/runner/mysql-runner%EF%BC%9A%E6%89%A7%E8%A1%8CMySQL%E6%9F%A5%E8%AF%A2
- https://github.com/picoded/dockerfiles/tree/master/runner/curl-post-runner%EF%BC%9A%E6%89%A7%E8%A1%8Ccurl POST请求
非组织化Dockerfile
未包含在上述分类中的其他文件夹,质量参差不齐,可能包含从优秀到未完成的各类Dockerfile。
- DevOps自动化:支持Git/zip代码拉取、环境配置、一次性任务执行等流程
- 应用构建环境:提供预配置的基础镜像(如含OpenJDK的Ubuntu)
- 一次性任务处理:文件写入、数据库操作、HTTP请求等临时任务执行
各Dockerfile的详细使用方法请参考其对应的GitHub仓库README:
- base系列:https://github.com/picoded/dockerfiles/tree/master/base
- git-cloner系列:https://github.com/picoded/dockerfiles/tree/master/git-cloner
- zip-cloner系列:https://github.com/picoded/dockerfiles/tree/master/zip-cloner
- runner系列:https://github.com/picoded/dockerfiles/tree/master/runner
任何问题、建议或反馈请提交至GitHub:https://github.com/picoded/dockerfiles
采用MIT License。选择此许可证是因为这些Docker仓库具有高度公开性,脚本易于复制,且多数Dockerfile功能可能存在类似实现。
- 遵循https://github.com/picoded/dockerfiles/tree/master/base%E4%B8%AD%E6%8C%87%E5%AE%9A%E7%9A%84%E6%A0%87%E5%87%86%E7%8E%AF%E5%A2%83
- 尽量避免包含外部文件,优先在Dockerfile中通过echo命令写入内容(过多的文件添加会导致Docker Hub中镜像层难以查看和追踪)
- 尽可能为所有功能提供合理默认值,确保无需配置即可部署(数据库等集成场景除外)
- 应用服务器构建优先使用https://github.com/picoded/dockerfiles/tree/master/base/ubuntu-base%EF%BC%9B%E5%85%B6%E4%BB%96%E5%9C%BA%E6%99%AF%E6%8C%89%E4%BB%A5%E4%B8%8B%E4%BC%98%E5%85%88%E7%BA%A7%E9%80%89%E6%8B%A9%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%EF%BC%9A%E5%AE%98%E6%96%B9%E4%BB%93%E5%BA%93 > alpine > busybox > debian > ubuntu-base