Docker-compose作为Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-compose可批量管理Docker服务器上的容器,并解决这些容器之间的依赖关系。
Docker和Docker-compose的安装部分,笔者在安装Harbor仓库一篇已有演示,此篇直接演示如何部署wordpress。
- 规划目录
生产中,我们可能会要使用Docker-compose部署很多的项目,为了方便区分,建议提前规划好目录。
例如笔者是实验环境,部署的为wordpress站点,则可以在/data/目录下创建wordpress目录。同时wordpress是要有一个web服务器和一个数据库服务器的,则可以在/data/wordpress目录创建web和mysql子目录,并在容器启动时挂载到容器中之久保存数据。
- 拉取镜像
wordpress站点的部署需要准备好wordpress镜像和MySQL镜像,生产中建议根据实际需求去制作镜像,实验环境笔者就直接通过Docker官方来拉取对应的镜像latest版本。
- 创建docker-compose.yml文件
3.1 docker-compose.yml文件
利用Docker-compose进行容器的编排时,需要创建docker-compose.yml文件(也可使用yaml后缀),并且只能从当前目录读取该文件。按照规划,笔者需在/data/wordpress目录中创建该文件,yml文件内容如下:
3.2 文件内容说明
docker-compose.yml文件中主要要包含版本、服务和容器三块的信息。
3.2.1 版本
version部分表示Docker-compose进行容器编排时要使用的版本,一共有1、2、2.x和3.x四类选择,当前主要使用2.x和3.x两个主版本,不同版本需要宿主机中Docker版本的支持,具体对应关系如下图所示:
3.2.2 服务
services表示要利用Docker-compose启动的服务,包括下面的wordpress和mysql-server两个。
3.2.3 容器
容器即具体服务所对应的内容,以wordpress服务部分为例:
①image表示服务要使用的镜像;
②container_name表示根据镜像所启动的容器名称,可不设置;
③restart设为always表示容器虽宿主机的重启而自动启动;
④expose部分表示暴露端口,可以省去;
⑤ports部分表示宿主机与容器的端口映射;
⑥environment部分表示容器要使用的环境变量,其中WORDPRESS_DB_HOST表示wordpress容器要使用的数据库服务器名称,对应MySQL服务名,WORDPRESS_DB_NAME、WORDPRESS_DB_USER和WORDPRESS_DB_PASSWORD分别表示要使用MySQL服务的数据库名、数据库用户名和数据库密码
⑦volumes部分表示要使用数据卷,将宿主机的/data/wordpress/web目录挂载wordpress容器网站根目录中。
mysql-server服务部分与wordpress服务类似,需要注意的是数据库相关信息要与wordpress服务部分保持一致。
3.3 检测文件语法
docker-compose.yml文件创建好后,建议执行docker-compose config -q检查一下是否有错误,无错误不会输出信息;也可以去掉-q选项,会根据编写的yml文件给出参考格式。
- 启动并查看容器
在docker-compose.yml文件所在的目录执行docker-compose up -d命令启动容器。
查看容器时,我们可以用docker-compose ps命令,也可使用docker ps命令。
- 站点初始化
利用Docker-compose部署的wordpress在进行初始化时流程较少,浏览器中输入宿主机IP即可进行站点初始化,并且设定了登录名和密码后即可登录进行后续操作,具体流程如下: