我试图了解通过Docker部署PHP Web应用程序的一般过程。我有一个在LAMP开发的网络应用程序。
到目前为止,我了解了所有我必须下载并安装Docker本身的所有内容。之后我必须安装Docker Composer。然后使用Composer我必须创建一个包含我的服务器(Apache)图像的容器。
这就是我感到困惑的地方。我是否必须为我的数据库创建一个容器,为应用程序本身创建另一个容器(包含代码的目录),或者我有一个容器用于数据库和应用程序的服务器?
我不需要详细的解释,只是这个过程背后的一般想法,然后我可以自己弄清楚其余的
感谢能够提供任何帮助的任何人。
答案 0 :(得分:4)
可以有很多方法,但简单的方法是在某些linux机器上安装docker,编写一个docker文件,安装并配置所有必需的组件,如 apache,php,mysql 等,以及然后在容器内部获取应用程序代码或将其作为外部卷从主机附加。
在编写 dockerfile 之后,您可以使用 docker build 命令构建docker镜像,在构建映像后,您可以在本地使用它或者推送到dockerhub,或者如果你愿意,可以将它推送到你的私人码头管理员。
另一种选择是,如果您只想测试,可以从包含 LAMP堆栈的dockerhub中提取已存在的图像,然后您只需要执行docker在图像上运行将您的php应用程序附加为外部卷。
当然,要在docker之外的端口80或443上访问应用程序,您必须在docker文件中或在docker run命令时公开这些端口。
对于测试环境,您可以只在一个容器中运行所有服务。
对于较大的部署,您可以考虑使用容器编排服务,例如 DockerSwarm 或 Kubernetes 。你也可以尝试从MesoSphere 中获取 DC / OS,方法是从你的github repo中获取一个可以在一台机器上设置DC / OS的流浪汉文件。然后,您可以根据需要在 Mesos 上启动任意数量的服务。它们为服务安装,容器管理和扩展提供开箱即用的支持。
答案 1 :(得分:2)
best practices说每个进程/服务有一个Docker容器(Apache + PHP的一个容器,MySQL的另一个容器,......)但它只是一个指导原则并不代表你不能拥有只有一个容器,里面有你需要的一切。
如果您决定只使用一个容器来运行所有服务,那么只需使用Docker(引擎)即可。在这种情况下,你仍然可以使用Docker Compose但是没有必要。
Docker Compose在运行多个容器时更有用。只需一个命令,您就可以启动并运行所有容器。此外,您只能使用Docker Engine,但您需要手动运行每个容器。