1. 程式人生 > >Centos7.4下用Docker-Compose部署WordPress

Centos7.4下用Docker-Compose部署WordPress

全局變量 int persist chmod eas ports use yaml demo

原文:Centos7.4下用Docker-Compose部署WordPress

前言

最近在學習Docker相關知識,通過閱讀第一本Docker書後,正想著手實戰用一下這個技術,但又不太敢直接在項目環境下動手。考慮足足三秒鐘之後決定買個阿裏雲ECS搭建一個屬於自己的基於DockerWordPress博客Daniel Fu‘s hut傳送門。

本博客搭建環境(阿裏雲ECS的購買與基本的安全組配置等工作在文中省略,各位看官可自行研究):

  • 阿裏雲ECS
  • Centos 7.4

部署工具:

  • Docker
  • Docker Compose(Compose工具比起單純的Dockerfile來更為便利、更易管理)
  • WordPressMySql5.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