使用DockerCompose来快速搭建WordPress
使用DockerCompose来快速搭建WordPress
以WordPress为例,使用DockerCompose快速建站,需要具备Docker环境。
DockerCompose它是Docker的一个工具,用来解决多容器创建相关的问题。
就比如WordPress它需要依赖Mysql数据库,我们可以使用DockerCompose一口气完成容器启动。
远点来说,分布式、微服务的项目,如果要使用Docker来部署的话,一个个的去控制容器也挺折磨的。
编写docker-compose配置文件
DockerCompose是通过读取配置文件来创建启动容器的,下面来创建一个docker-compose.yml
配置文件。
1 |
|
看到这里,应该可以理解这个配置文件其实就是将一组容器的启动命令参数编织为yaml。
关于这组服务的ProjectName,Docker默认会以该配置文件的上层文件夹名称作为ProjectName。
相关docker-compose命令
启动
使用docker compose up
就可以启动这组服务,但这个命令是在前台运行所有服务,会把所有服务的日志输出到前台。
使用docker compose up -d
就可以在后台运行服务,跟单独使用Docker是类似的。
在启动时Docker会将所有服务创建在一个新的临时网络下,所以不用担心服务间通信问题。
其他管理命令
其他命令的话,其实在终端输入docker compose
或者docker compose --help
就能查看。
另外,DockerCompose的命令是基于配置文件、ProjectName的。
停止
使用docker compose stop
停止这组服务。
既然有停止,也就有对应的start。
删除
使用docker compose rm
来删除服务会有询问确认机制,不过需要先停止。
可以使用一行命令docker compose rm -s
来停止并删除这组服务。
docker compose rm -fs
停止这组服务并删除服务所有容器,不会跟你询问确认。
日志
使用docker compose logs
来查看日志。
可以用docker compose logs -f
来持续跟踪日志。
拉通
- 编写好docker-compose配置文件
- 在docker-compose配置文件目录下使用
docker compose up -d
命令启动 - 访问
http://宿主机IP
然后就可以看到WordPress的初始化页面了
再配置一下Mysql连接信息
还记得前面说的docker-compose会帮我们创建一个临时网络吗,所以数据库主机就可以写ServiceName。
到这一步就结束了,后续的流程我就不说了哈。
PS
Convention over Configuration思想无处不在
前面提到过,DockerCompose的命令是基于配置文件、ProjectName的。
想想关于配置文件的名称一定得是docker-compose的yaml文件吗?
不,这是约定优于配置(Convention over Configuration)的思想。
你可以使用docker compose -f 文件路径
指定DockerCompose的配置文件。
你也可以使用docker compose -p 项目名
来指定ProjectName。
比如你如果有多组服务时,可以用过-p
指定一组服务的ProjectName来管理它。
服务启动顺序问题
如果我们把DockerCompose用在JavaWeb项目上,比如一个服务是后端服务器,另一个服务是Mysql,又或者是有两个后端服务,但是A需要B先启动,这一类的场景就会导致后端服务启动不了。
这问题本应该是属于Docker去解决的,但是Docker给我们的回答是:你自己解决。
Docker不支持指定顺序启动,它给出的建议就是用户自己引入端口等待的相关依赖。
然后它给的项目还是node写的,这里推荐一个用Shell写的。
如果可以,延迟加载、重试都是可选的实现方式。