Centos7.4下用Docker-Compose部署WordPress

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

前言

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

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

  • 阿里雲ECS
  • Centos 7.4

部署工具:

  • Docker
  • Docker Compose(Compose工具比起單純的Dockerfile來更爲便利、更易管理)
  • WordPressMySql5.7(運行在Docker容器中)

如今逐個講解下如何安裝:mysql

Docker:

根據官方文檔,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 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

部署WordPress和MySql容器:

先建立一個工做目錄,並建立名爲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文件的語法,請參考官方文檔,這裏就不一一解釋了(由於我本身也是剛入門,只會幾個基本的用法)。
  • 和官方給的Demo不一樣,上述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容器。這個小插曲告訴咱們,不要隨便在宿主機上設置環境變量,若是必須設置,也應該作好命名和管理工做。


參考文檔:
相關文章
相關標籤/搜索