最近在学习Docker
相关知识,经过阅读第一本Docker书
后,正想着手实战用一下这个技术,但又不太敢直接在项目环境下动手。考虑足足三秒钟以后决定买个阿里云ECS搭建一个属于本身的基于Docker
的WordPress
博客Daniel Fu's hut传送门。html
阿里云ECS
Centos 7.4
Docker
Docker Compose
(Compose工具比起单纯的Dockerfile来更为便利、更易管理)WordPress
和MySql5.7
(运行在Docker容器中)如今逐个讲解下如何安装:mysql
根据官方文档,Docker
分为Community Edition (CE)
和Enterprise Edition (EE)
两个版本,咱们做为学习和我的使用,固然选择的是Community Edition (CE)
,安装步骤以下:linux
// 步骤1 - 为了确保没有安装过老的Docker版本,先将已经安装的Docker从宿主机上删除(若是是在使用中的正式服务器,请谨慎执行此步): $ sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine // 步骤2 - 安装Docker所需的包: $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 // 步骤3 - 配置到稳定的Docker CE安装库: $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo // 步骤4 - 安装Docker CE: $ sudo yum install docker-ce // 步骤5 - 启动Docker服务: $ sudo systemctl start docker // 步骤6 - 测试是否安装成功: // 能够经过查看版本的形式确认安装是否成功: $ docker --version // 也能够经过直接运行hello-world容器来确认安装是否成功: $ docker run hello-world
为了便于使用,咱们须要安装Docker Compose
来管理和运行Docker
容器,Docker Compose
的安装步骤以下:git
// 步骤1 - 下载安装文件: $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose // 步骤2 - 给已下载的安装文件添加执行权限: $ sudo chmod +x /usr/bin/docker-compose // 步骤3 - 测试是否安装成功: $ docker-compose --version
先建立一个工做目录,并建立名为docker-compose.yml
的文件:github
$ cd /usr/ $ sudo mkdir myblog && cd myblog $ sudo vim docker-compose.yml
将以下内容保存在docker-compose.yml
文件中:sql
version: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: your-mysql-root-password MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wp_site:/var/www/html ports: - "80:80" - "443:443" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data: wp_site:
Composer
所使用的的yml
文件的语法,请参考官方文档,这里就不一一解释了(由于我本身也是刚入门,只会几个基本的用法)。yml
文件中,我在volumes
中添加了wp_site
的卷,并将其挂在到wordpress
容器中,这样,当容器被中止或者删除后,从新安装并启动wordpress
容器时,已安装的plugins
也能够直接继续使用,而不是从新安装。此时,咱们直接使用docker-compose
命令启动容器:docker
$ sudo docker-compose up -d数据库
启动以后,咱们就能够经过 http://ecs-ip (由于咱们绑定的是宿主机的80端口) 来访问WordPress
(若是不能访问,请查看阿里云安全组中,是否已经开启了你所指定端口的公网访问权限,通常80端口是默认开启的)。vim
若是须要关闭服务,则执行以下命令:centos
$ sudo docker-compose down
咱们的WordPress
博客已经搭建完成,经过访问后台管理页面来初始化网站。而后找一个喜欢的主题,安装好必要的插件,咱们就能够在一个属于本身的博客网站上写下本身的第一篇博客。
分享一下:这是我第一次用WordPress
,还有不少东西须要慢慢摸索。目前我安装了Jetpack
插件和WP Editor.MD
插件,选用的主题是Sirius
免费版。
第一次安装时,当使用 sudo docker-compose up -d
命令启动容器后,提示容器启动正常,可是没法访问网站,此时经过sudo docker logs xxx_wordpress_1
(xxx_wordpress_1以实际生产的容器名称为准)查看日志,看到日志中不断提示数据库没法链接的错误。花了好几个小时排查,总算找到问题所在,是由于之前在机器上写Docker
相关的测试例子的时候,宿主机上设置了几个全局变量(如:ServerName、ServerHost、UserName等,可经过env
命令查看当前系统环境变量),这些全局变量致使了wordpress
容器没法链接到db
容器。这个小插曲告诉咱们,不要随便在宿主机上设置环境变量,若是必须设置,也应该作好命名和管理工做。