Centos7.4下用Docker-Compose部署WordPress
前言
最近在學習Docker
相關知識,通過閱讀第一本Docker書
後,正想著手實戰用一下這個技術,但又不太敢直接在項目環境下動手。考慮足足三秒鐘之後決定買個阿裏雲ECS搭建一個屬於自己的基於Docker
的WordPress
博客Daniel Fu‘s hut傳送門。
本博客搭建環境(阿裏雲ECS的購買與基本的安全組配置等工作在文中省略,各位看官可自行研究):
阿裏雲ECS
Centos 7.4
部署工具:
Docker
Docker Compose
(Compose工具比起單純的Dockerfile來更為便利、更易管理)WordPress
和MySql5.7
(運行在Docker容器中)
現在逐個講解下如何安裝:
Docker:
根據官方文檔,Docker
分為Community Edition (CE)
和Enterprise Edition (EE)
兩個版本,我們作為學習和個人使用,當然選擇的是Community Edition (CE)
,安裝步驟如下:
// 步驟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 Compose
來管理和運行Docker
容器,Docker Compose
的安裝步驟如下:
// 步驟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
部署WordPress和MySql容器:
先創建一個工作目錄,並創建名為docker-compose.yml
的文件:
$ cd /usr/
$ sudo mkdir myblog && cd myblog
$ sudo vim docker-compose.yml
將如下內容保存在docker-compose.yml
文件中:
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
文件的語法,請參考官方文檔,這裏就不一一解釋了(因為我自己也是剛入門,只會幾個基本的用法)。 - 和官方給的Demo不同,上述
yml
文件中,我在volumes
中添加了wp_site
的卷,並將其掛在到wordpress
容器中,這樣,當容器被停止或者刪除後,重新安裝並啟動wordpress
容器時,已安裝的plugins
也可以直接繼續使用,而不是重新安裝。
此時,我們直接使用docker-compose
命令啟動容器:
$ sudo docker-compose up -d
啟動之後,我們就可以通過 http://ecs-ip (因為我們綁定的是宿主機的80端口) 來訪問WordPress
(如果不能訪問,請查看阿裏雲安全組中,是否已經開啟了你所指定端口的公網訪問權限,一般80端口是默認開啟的)。
如果需要關閉服務,則執行如下命令:
$ 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
容器。這個小插曲告訴我們,不要隨便在宿主機上設置環境變量,如果必須設置,也應該做好命名和管理工作。
參考文檔:
- Install Docker
- Install Docker Compose
- Deploy Wordpress With Docker Compose
Centos7.4下用Docker-Compose部署WordPress