如何使用docker compose快速搭建wordpress博客
第一步: 安装Docker Compose,使用下面的命令行直接安装。实际上该命令的作用就是下载docker compose二进制文件,并将二进制文件存储到/usr/local/bin目录,并重命名为docker-compose。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
第二步: 书写一个docker compose配置文件docker-compose.yml,我已经书写好了,大家去这里下载docker-compose.yml 。这个文件定义的内容我会在后文为大家讲解。
第三步: 在docker-compose.yml的同一个目录下执行命令/usr/local/bin/docker-compose up -d 完成服务启动。就是这么简单我已经安装完成了,访问http://<linux宿主机服务器>:8000你会看到下图,按照图形提示一步一步的设置你的博客就可以了。同样的你使用mysql客户端,可以访问该宿主机的3306端口,查看数据库数据。
二、背后隐藏了什么?
docker compose可以认为是一组容器服务的组合,容器服务的定义方式核心的三段:version指定docker-compose.yml 文件的版本;services配置容器组合中包含哪些具体的服务;volumes用于定义容器中目录与宿主机之间的目录映射。我们来重点说明下services配置段启动的两个服务容器:mysql和wordpress,都做了哪些配置。
第一段db定义了一个mysql数据库,使用的docker容器镜像是mysql:5.7;volumes将容器内的数据持久化保存到宿主机,避免容器服务重启之后数据库数据丢失。restart表示容器如果是停止状态(如果不是人为停止),会尝试重启保持服务运行。environment定义了一些环境变量,比如:mysql的root密码,数据库实例名称,访问该mysql实例的用户名,密码(可以根据自己的需要修改哦)。
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
第二段wordpress容器服务,depends_on表示该容器服务依赖于上文的mysql,需要先启动mysql容器,再启动wordpress容器; image表示默认使用的容器镜像是wordpress最新版(latest),这个容器镜像里面默认安装了apache web服务、php相关的依赖、mysql客户端等; ports表示端口映射,将容器内apache服务的80端口映射到宿主机的8000端口;environment指定了一些环境变量,用于访问mysql数据库(所以和上文中的定义要一致)。
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
三、再深入一点:数据到底存哪了?
上文中通过volumes定义/var/lib/mysql映射到磁盘本地路径,我们并没有具体定义磁盘本地路径的位置,那么mysql的数据文件保存到哪里了?
我们通过docker inspect compose_db_1命令来查看一下,其中compose_db_1是上文中mysql镜像运行的服务容器名称。compose是docker-compose.yml 文件所在父目录的名称,db是上文中service定义的名称,1就是一个自增序号。
"Mounts": [
{
"Type": "volume",
"Name": "compose_db_data",
"Source": "/var/lib/docker/volumes/compose_db_data/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
}
]
我们可以看到"Source": "/var/lib/docker/volumes/compose_db_data/_data",这里表示的就是上文中启动的mysql容器的默认持久化数据保存路径。那么下一个问题,如果我们不希望保存到这个路径怎么办?
volumes:
- db_data:/var/lib/mysql
docker-compose.yml配置文件改成这样即可
volumes:
- <你希望指定的本地宿主机绝对路径>:/var/lib/mysql
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
第二步: 书写一个docker compose配置文件docker-compose.yml,我已经书写好了,大家去这里下载docker-compose.yml 。这个文件定义的内容我会在后文为大家讲解。
第三步: 在docker-compose.yml的同一个目录下执行命令/usr/local/bin/docker-compose up -d 完成服务启动。就是这么简单我已经安装完成了,访问http://<linux宿主机服务器>:8000你会看到下图,按照图形提示一步一步的设置你的博客就可以了。同样的你使用mysql客户端,可以访问该宿主机的3306端口,查看数据库数据。
二、背后隐藏了什么?
docker compose可以认为是一组容器服务的组合,容器服务的定义方式核心的三段:version指定docker-compose.yml 文件的版本;services配置容器组合中包含哪些具体的服务;volumes用于定义容器中目录与宿主机之间的目录映射。我们来重点说明下services配置段启动的两个服务容器:mysql和wordpress,都做了哪些配置。
第一段db定义了一个mysql数据库,使用的docker容器镜像是mysql:5.7;volumes将容器内的数据持久化保存到宿主机,避免容器服务重启之后数据库数据丢失。restart表示容器如果是停止状态(如果不是人为停止),会尝试重启保持服务运行。environment定义了一些环境变量,比如:mysql的root密码,数据库实例名称,访问该mysql实例的用户名,密码(可以根据自己的需要修改哦)。
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
第二段wordpress容器服务,depends_on表示该容器服务依赖于上文的mysql,需要先启动mysql容器,再启动wordpress容器; image表示默认使用的容器镜像是wordpress最新版(latest),这个容器镜像里面默认安装了apache web服务、php相关的依赖、mysql客户端等; ports表示端口映射,将容器内apache服务的80端口映射到宿主机的8000端口;environment指定了一些环境变量,用于访问mysql数据库(所以和上文中的定义要一致)。
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
三、再深入一点:数据到底存哪了?
上文中通过volumes定义/var/lib/mysql映射到磁盘本地路径,我们并没有具体定义磁盘本地路径的位置,那么mysql的数据文件保存到哪里了?
我们通过docker inspect compose_db_1命令来查看一下,其中compose_db_1是上文中mysql镜像运行的服务容器名称。compose是docker-compose.yml 文件所在父目录的名称,db是上文中service定义的名称,1就是一个自增序号。
"Mounts": [
{
"Type": "volume",
"Name": "compose_db_data",
"Source": "/var/lib/docker/volumes/compose_db_data/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
}
]
我们可以看到"Source": "/var/lib/docker/volumes/compose_db_data/_data",这里表示的就是上文中启动的mysql容器的默认持久化数据保存路径。那么下一个问题,如果我们不希望保存到这个路径怎么办?
volumes:
- db_data:/var/lib/mysql
docker-compose.yml配置文件改成这样即可
volumes:
- <你希望指定的本地宿主机绝对路径>:/var/lib/mysql